在压缩之前缩小JavaScript有什么好处?

Ste*_*ner 31 javascript gzip minify

在压缩之前是否有一些有效的目的来缩小?如果gzip文件首先缩小,那么gzip文件似乎不太可能.

我问,因为在缩小代码中诊断生产问题要困难得多,而且我想知道人们是否为了这个目的而无缘无故.

Thi*_*ilo 26

至于原始文件大小,这是一个示例(jQuery 1.4.2):

$ curl http://code.jquery.com/jquery-1.4.2.js | gzip > jquery.gz
$ curl http://code.jquery.com/jquery-1.4.2.min.js | gzip > jquery-min.gz

$ ls -la jquery*
-rw-r--r--  1 me  staff  24545 Apr  7 12:02 jquery-min.gz
-rw-r--r--  1 me  staff  45978 Apr  7 12:02 jquery.gz
Run Code Online (Sandbox Code Playgroud)

所以缩小版的大小只有一半.


Wol*_*lph 22

是的,肯定有一个好处.

缩小是有损压缩,而gzipping是无损的.Ergo,缩小你删除不需要的数据(如注释和长变量名),这将总是有助于使您的文件更小.即使使用gzip,在大多数情况下仍然会有所不同.

例:

function foo(this_is_my_variable){
    var this_is_my_other_variable = 0;
    this_is_my_other_variable = this_is_my_other_variable + this_is_my_variable;
    return this_is_my_other_variable;
}
Run Code Online (Sandbox Code Playgroud)

这可能会缩小为:

function foo(a){
    var b = 0;
    b = b +a;
    return b;
}
Run Code Online (Sandbox Code Playgroud)

或者如果minifier是聪明的:

function foo(a){
    return a;
}
Run Code Online (Sandbox Code Playgroud)

所有代码都给出相同的结果,但大小差异很大.

  • 迷你者有时候*太聪明了.上面的"智能缩小"版本并不总是产生与未触摸版本相同的结果(尝试发送字符串,或根本没有参数).如果已知尝试"超级智能",则必须小心调用minifyer时使用的选项.就个人而言,如果我完全缩小,我很少使用更激进的设置.gzip带我走了很长的路:) (9认同)
  • gzip也会使重复的"this_is_my_variable"缩短.你的三个例子gzip到98,70和51字节. (3认同)
  • 确实,缩小器通过切换评论来帮助; 并不是真的,缩短长变量名称会有所帮助,因为gzip的deflate已经处理好了(在这种情况下,只有字体大小才能从缩小中受益). (3认同)