31

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

我问是因为在缩小代码中诊断生产问题要困难得多,而且我想知道人们是否无缘无故地让自己受到影响。

4

5 回答 5

27

至于原始文件大小,这里是一个示例(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

所以缩小版大约是一半大小。

于 2010-04-07T04:04:38.740 回答
22

是的,肯定有好处。

缩小是有损压缩,而 gzipping 是无损压缩。因此,通过缩小您删除不需要的数据(如注释和长变量名),这将始终有助于使您的文件更小。即使使用 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;
}

或者如果缩小器很聪明:

function foo(a){
    return a;
}

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

于 2010-04-07T03:51:35.403 回答
3

也许。除了删除空格之外,缩小 JavaScript 可能会导致相同文本的更多重复,这可能意味着 gzip 的压缩率会更高。gzip幸运的是,由于命令行工具(在 *nix 中很常见并且可用于 Windows)使用相同的压缩算法(尽管格式不完全相同),因此很容易进行前后处理。

于 2010-04-07T03:52:16.963 回答
3

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

当然,只有基准测试和分析才能告诉您这是否真的对您的特定情况有益。

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

于 2010-04-07T04:06:21.003 回答
1

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

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

于 2010-04-07T03:58:41.953 回答