当我们有 gzip 时,为什么人们会缩小 css 和 javascript?[复制]

Why do people minify css and javascript, when we have gzip? [duplicate]

提问人:Silver Light 提问时间:4/24/2013 最后编辑:Silver Light 更新时间:9/7/2017 访问量:13543

问:

如果人们可以在 Web 服务器上打开 gzip 压缩,为什么人们会经历缩小 JavaScript 和 CSS 文件的所有痛苦?这将在流量性能方面产生相同(甚至更好)的结果。

缩小会带来额外的好处吗?

JavaScript CSS 性能 gzip 客户端

评论

0赞 cimmanon 4/24/2013
对于某些未缓存超过特定大小的文件的移动设备,缩小很重要。
2赞 FelipeAls 4/25/2013
为什么不两者兼而有之呢?至少删除评论,然后 gzipping?
1赞 Florian Ledermann 8/21/2014
串联对于减少 HTTP 请求的数量很重要,但我觉得 Web 社区对缩小的痴迷是可悲的。
0赞 stackdump 10/5/2014
我喜欢@FelipeAls的评论。缩小没有缺点,它有一个明显的好处:较小的文件 = 较低的服务和客户端带宽使用
2赞 nilskp 12/30/2014
@stackdump,说缩小没有缺点有点牵强。有一些微妙的错误可以潜入,显然是由于缩小不良,但仍然如此。而且这些错误在开发过程中通常不会被发现,因为缩小通常发生在后期。这也是一个额外的构建步骤。这些事情可能是次要的,但它们缺点。

答:

12赞 Pete 4/24/2013 #1

您可以将 gzip(通常内置于 Web 服务器中)与 Minification 结合使用。但是,缩小可以做很多 gzip 无法完成的其他操作,例如删除注释、将长变量重命名为较短的变量名称等。

生成的传输数据可能比简单地对原始.js进行 gzip 压缩要小得多。显然,这取决于源.js。

您可以查看 Compressorater(http://compressorrater.thruhere.net/)。你可以加入你的.js,它将使用各种有和没有 gzip 的库来缩小,并显示结果。您可以看到各种库的简单 gzipped 和 gzipped + 缩小之间的比较。

评论

2赞 Pavelloz 9/29/2016
实际上,缩小CSS并不能缩短任何名称,只能删除一些不必要的字符和注释,这有时是很少;)我刚刚测试了我的一个 css 文件的缩小 + gzip 与 gzip 版本,差异很小,我什至懒得缩小它(是的,这个项目没有为此设置一个进程,如果有,我什至懒得考虑这个差异:))
0赞 FINDarkside 10/29/2018
@Pavelloz 当然可以,如果它也从html中缩小它们。
0赞 Pavelloz 2/23/2019
你有什么项目可以炫耀吗?还是只是理论?
3赞 Kenneth 4/24/2013 #2

缩小 Javascript 和 CSS 不仅可以压缩它,还可以添加其他无法通过压缩实现的优化。

例如,通过缩小,您可以修改长变量的名称。然后,该变量的所有实例将只有一个字符。 缩小的另一件事是删除评论。这不能通过 gzip 完成。

除此之外,缩小通常将各种文件捆绑成一个文件,从而减少请求量

除了缩小之外,您还应该使用 gzip

评论

0赞 Ian 4/24/2013
“您可以修改长变量的名称。” - 这不是缩小的作用。这就是所谓的混淆。
4赞 Kenneth 4/24/2013
缩小也会减少变量名称的长度(如果它认为它是安全的)。试试谷歌的 minifier 或 YUI minifier,你会看到它也能做到这一点。显然,这也混淆了代码,因为它更难阅读,所以它基本上是二合一操作。
0赞 Ian 4/24/2013
但这不是缩小的意义所在。缩小会删除空格、不必要的字符、注释等。混淆会改变代码,但其功能性保持不变。仅仅因为某些“缩小器”两者兼而有之,并不意味着这就是缩小。我知道我是技术性的,但仍然
2赞 Kenneth 4/24/2013
好吧,你可以争论这个问题。严格来说,使变量名称更短也会缩小它,因为总文件大小会减小。但同样,语义。事实是,几乎所有的压缩器也缩短了变量名称和函数名称。
1赞 Pete 4/25/2013
@Ian,我不同意你对缩小的定义,所以我觉得我不是在谈论特定的工具。我也不认为我是唯一一个这样做的人(stackoverflow.com/questions/12768840/minify-and-variable-names)。缩小是关于减小代码的大小。重命名变量可以实现该目标。因此,在我的书中,这是一个有效的缩小步骤。