在压缩之前缩小是否有一些有效的目的?如果首先缩小 gzip 压缩文件,它似乎不太可能更小。
我问是因为在缩小代码中诊断生产问题要困难得多,而且我想知道人们是否无缘无故地让自己受到影响。
在压缩之前缩小是否有一些有效的目的?如果首先缩小 gzip 压缩文件,它似乎不太可能更小。
我问是因为在缩小代码中诊断生产问题要困难得多,而且我想知道人们是否无缘无故地让自己受到影响。
至于原始文件大小,这里是一个示例(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
所以缩小版大约是一半大小。
是的,肯定有好处。
缩小是有损压缩,而 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;
}
所有代码都给出相同的结果,但大小差异很大。
也许。除了删除空格之外,缩小 JavaScript 可能会导致相同文本的更多重复,这可能意味着 gzip 的压缩率会更高。gzip
幸运的是,由于命令行工具(在 *nix 中很常见并且可用于 Windows)使用相同的压缩算法(尽管格式不完全相同),因此很容易进行前后处理。
它还可以帮助加快浏览器中 javascript 代码的解析速度。根据文件的大小,浏览器可能会花费大量时间来解析和标记文件,这将通过缩小来减少。
当然,只有基准测试和分析才能告诉您这是否真的对您的特定情况有益。
我发现最好的方法是在我的网站上保留所有 .js 文件的缩小版本和非缩小版本,并且只需使用配置开关在两者之间切换。这样,正常生产可以使用缩小版本,然后如果我必须调试某些东西,只需拨动开关,就会提供非缩小版本。(当然,构建过程确保缩小版和非缩小版是同步的)
当我在 gzip 之前缩小时,我总是看到最终字节数明显减少。
我有一个 20 分钟的 hack 工作 php 脚本,它与 yui 压缩器和谷歌闭包编译器接口。它显示了我之前和之后的字节,包括 gzip 之后,所以我很容易检查。