2012-04-15 56 views
1

我注意到缩小器不会用原型javascript执行那么好,因为如果它们以此开始,它们不会替换任何方法或属性。例如:JavaScript优化和缩小与gzipping

// unoptimized 182 bytes 
myClass.prototype.myFunction = function(){ 
    this.myElementDom.style.backgroundColor='#000'; 
    this.myElementDom.style.color='#FFF'; 
    this.myElementDom.style.borderColor='#DDD'; 
} 

// 168 bytes = 92% of unoptimized, YUI compressed 
myClass.prototype.myFunction=function(){this.myElementDom.style.backgroundColor="#000";this.myElementDom.style.color="#FFF";this.myElementDom.style.borderColor="#DDD"}; 

// optimized 214 bytes 
// set a replaceable local scope variable and reduce 2 variable 
// lookups at the same time 
// file-size in the development version doesn't matter, so we can even increase it 
// to preserve readability 
myClass.prototype.myFunction = function(){ 
    var myElementDomStyle = this.myElementDom.style 
    myElementDomStyle.backgroundColor='#000'; 
    myElementDomStyle.color='#FFF'; 
    myElementDomStyle.borderColor='#DDD'; 
} 

// 132 bytes = 72.53% of unoptimized, YUI compressed 
myClass.prototype.myFunction=function(){var a=this.myElementDom.style;a.backgroundColor="#000";a.color="#FFF";a.borderColor="#DDD"}; 

华友世纪,19.47%保存...不要...发布用gzip脚本启用,未优化,YUI压缩版本加载与130个字节(= 71.42%来自未优化),显然在收益比优化后的YUI压缩版本节省了134个字节(=未优化的73.63%)......在考虑压缩是如何工作的时候可能是显而易见的,但现在要走了吗?首先做这种微型优化和较小的压缩,用gzip证明更大的文件大小......因为通过这种优化,您可以轻松地使您的代码更少可读性和可维护性。

一切按http://refresh-sf.com/yui/

+0

您可以使用google closure minifier。 'gzip' +'minify'仍然比只有'gzip'好。 – kirilloid 2012-04-15 23:15:45

+0

不是第二个例子更多关于在运行时减少DOM查找,而不是寻找空间节省? – 2012-04-16 11:22:22

回答

1

代码的可读性不应该接触到它的信息 - 你应该只涅槃生产服务器和非精缩代码开发。不要微调优化你的变量和函数名称,你几乎可以肯定会牺牲代码的可读性,使得可用性几乎为零 - 你正在讨论几KB的文件,它将被下载一次并缓存起来。

至于是否缩小和gzip或只是gzip - 做任何产生较小的整体文件大小。

1

无论如何,182字节的代码不会缩小或压缩太多。缩小工作通过消除空白(在你的五行代码中只有16个字节)和缩短函数,变量和属性名称来实现,在这种情况下,由于范围的原因它不能做到这一点。压缩通过发现重复序列并消除它们而起作用。在你的五行代码中没有足够的文本可以找到很多重复。

尝试缩小和压缩50或100或更多行代码,您将看到更加引人注目的结果。而且,正如@rgvcorley所建议的那样,您应该专注于在开发环境中使代码易读易维护,并将较小的文件大小细节留给构建过程和Web服务器。

1

有一件事不排除另一件事:你可以做最小化和gzipping JS文件(通常在web服务器级别发生gzipping)。我认为它会提供最好的结果。 最小化和压缩在较大的文件上效果更好。

除了让JS小我想看看:

  1. 合并JS文件分割成一个缩小的文件,以减少HTTP的请求数
  2. 优化HTTP缓存设置
  3. 把JS到CDN减少下载时间
  4. 使用公共CDN为一些常见的JS库例如jQuery的,所以它更容易从用户的本地缓存
  5. 添加JS文件和HTML页面

年底采取检查您的网站http://www.webpagetest.org/让报什么其他的东西可以改善

欲了解更多信息,我会推荐阅读High Performance Web Sites的书。它涵盖了nany场景,即使一些简单的更改也可以显着改善页面加载时间。

+0

我认为我的问题没有明确的措词,我没有计划将我的代码发布到未知。我正在阅读你指出的这本书,这是我试图减少变量查找和优化缩小的原因:-) – 2012-04-16 09:10:27