【问题标题】:Why do people minify css and javascript, when we have gzip? [duplicate]当我们有 gzip 时,为什么人们会缩小 css 和 javascript? [复制]
【发布时间】:2013-04-24 15:42:28
【问题描述】:

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

缩小是否会带来额外的好处?

【问题讨论】:

  • 缩小对于某些未缓存超过一定大小的文件的移动设备很重要。
  • 为什么不两者兼而有之?至少删除 cmets,然后进行 gzip 压缩?
  • 连接对于减少 HTTP 请求的数量很重要,但我觉得网络社区对缩小的痴迷很可悲。
  • 我喜欢@FelipeAls 的评论。缩小没有缺点,它有一个明显的好处:更小的文件 = 更低的服务和客户端带宽使用
  • @stackdump,说缩小没有的缺点有点牵强。有一些微妙的错误可以潜入,显然是由于缩小不良,但仍然存在。并且在开发过程中通常不会发现这些错误,因为缩小通常发生在后期。这也是一个额外的构建步骤。这些事情可能是次要的,但它们缺点。

标签: javascript css performance gzip client-side


【解决方案1】:

您可以将 gzip(通常内置在 Web 服务器中)与 Minification 结合使用。缩小可以做很多 gzip 不能做的事情,例如删除 cmets、将长变量重命名为更短的变量名等。

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

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

【讨论】:

  • 实际上,缩小 CSS 并不能缩短任何名称,只能删除一些不必要的字符和 cmets,这有时很少;) 我刚刚测试了我的一个 css 文件的缩小 + gzip 与 gzip 版本和差异是如此之小,我什至没有费心去缩小它(是的,这个项目没有为此设置一个流程,如果有,我什至不会费心去考虑这个差异:))
  • @Pavelloz 当然可以,如果它还从 html 中缩小它们。
  • 你在野外有什么项目可以炫耀吗?还是只是理论?
【解决方案2】:

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

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

除此之外,通常会将各种文件捆绑到一个文件中,从而减少请求量

除了缩小你还应该使用 gzip

【讨论】:

  • "您可以修改长变量的名称。" - 这不是缩小所做的。这叫做混淆。
  • 缩小也会减少变量名的长度(如果它认为它是安全的)。试试 google 的 minifier 或 YUI minifier,你会看到它也能做到这一点。显然这也会混淆代码,因为它更难阅读,所以它基本上是一个二合一的操作。
  • 但这不是缩小的意思。缩小会删除空格、不必要的字符、cmets 等。混淆会改变代码,但保持其功能不变。仅仅因为某些“缩小器”两者兼而有之,并不意味着这就是缩小。我知道我是技术人员,但仍然
  • 好吧,你可以争论这个。严格来说,使变量名更短也会缩小它,因为总文件大小会减小。但同样,语义。事实上,几乎所有的压缩器也会缩短变量名和函数名。
  • @Ian,您可能有一些不包括变量重命名的特定缩小定义,但是几个非常流行的缩小器具有内置的,所以我认为它是缩小过程的可选部分.根据维基百科的缩小文章:“缩小的源代码也可能被用作一种混淆......”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-11-21
  • 2020-10-17
  • 2012-04-28
  • 2015-07-11
  • 2020-12-31
  • 1970-01-01
相关资源
最近更新 更多