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

时间:2010-04-07 03:48:44

标签: javascript gzip minify

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

我问,因为在缩小代码中诊断生产问题要困难得多,而且我想知道人们是否因为没有目的而自行处理。

5 个答案:

答案 0 :(得分: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

因此缩小版的大小只有一半。

答案 1 :(得分: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;
}

可能会缩小为:

function foo(a){
    var b = 0;
    b = b +a;
    return b;
}

或者如果minifier是聪明的:

function foo(a){
    return a;
}

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

答案 2 :(得分:3)

也许。除了删除空格之外,缩小JavaScript可能会导致同一文本的重复次数增加,这可能意味着使用gzip会略微提高压缩率。幸运的是,自gzip命令行工具以来很容易做到,因为* nix和available for Windows中常见的使用相同的压缩算法(尽管格式不完全相同)。

答案 3 :(得分:2)

它还可以帮助加快解析浏览器中的javascript代码。根据文件的大小,浏览器可能会花费大量时间来解析和标记文件,这将通过缩小来减少。

当然,只有基准测试和分析会告诉您这是否真的会对您的特定情况有所帮助。

我发现效果最好的是我在我的网站上保留所有.js文件的缩小和非缩小版本,只需使用配置开关在两者之间切换。这样,正常生产可以使用缩小版本,然后如果我必须调试某些东西,只需翻转开关,然后提供非缩小版本。 (构建过程确保缩小版本和非缩小版本同步)

答案 4 :(得分:1)

当我在gzip之前缩小时,我总是看到最终字节数明显减少。

我有一个20分钟的黑客作业php脚本,它与yui压缩器和googles闭包编译器接口。它显示了我之前和之后的字节,包括gzip之后,所以我很容易检查。