为了账号安全,请及时绑定邮箱和手机立即绑定

Gzip与缩小

Gzip与缩小

Gzip与缩小前几天,我在热闹的讨论中谈到了将Javascript和CSS压缩为最小,而不是喜欢使用Gzip的人。我称这个人为X。X表示Gzip已经压缩了所有代码,因为它压缩了文件。我不同意。Zip是缩小文件大小的一种无损方法。无损意味着必须完美还原原始文档,这意味着必须存储信息才能还原空格,不需要的字符,注释的代码以及所有其他内容。由于必须压缩更多空间,因此占用了更多空间。我没有测试方法,但是我相信这段代码的Gzip:.a1 {    background-color:#FFFFFF;    padding: 40px 40px 40px 40px;}仍将大于此代码的Gzip:.a1{body:background-color:#FFF;padding:40px}有谁能证明对与错。而且请不要说“是对的,因为那是我一直使用的”。我在这里要求科学证明。
查看完整描述

4 回答

?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

这是我前一段时间使用我网站上的“真实” CSS文件进行测试的结果。CSS Optimiser用于缩小。Ubuntu随附的标准Linux存档应用程序用于Gzipping。


原始:28,781字节

最小:22,242字节

压缩:6,969字节

最小+ Gzip:5,990字节


我个人的观点是首先选择Gzipping,因为那显然是最大的不同。至于缩小,这取决于您的工作方式。您必须保留原始CSS文件才能进行进一步的编辑。如果它不麻烦您在每次更改后将其最小化,那就去做。


(注意:还有其他解决方案,例如,在为文件提供服务时通过minifier的“按需”运行它,并将其缓存在文件系统中。)


查看完整回答
反对 回复 2019-12-16
?
慕工程0101907

TA贡献1887条经验 获得超5个赞

测试时要当心:这两个CSS片段很小,因此它们无法从GZIP压缩中受益-仅添加GZIP的小标头会损失所获得的收益。实际上,您不会有这么小的CSS文件,并且不必担心对其进行压缩。

minify + gzip压缩的不仅仅是gzip

原始问题的答案是,是的,minify + gzip将获得比gzip更大的压缩率。对于任何不平凡的示例(例如,超过数百字节的任何有用的JS或CSS代码),都是如此。

有关有效的示例,请获取可压缩且未压缩的Jquery源代码,并使用gzip对其进行压缩并进行查看。

值得一提的是,与优化的CSS相比,JavaScript的缩小带来的好处要大得多,但仍然有好处。

推理:

GZIP压缩是无损的。这意味着它必须存储所有文本,包括确切的空格,注释,长变量名等,以便以后可以完美地复制它们。另一方面,缩小是有损的。如果您缩减代码,那么您将从代码中删除许多此类信息,而剩下的GZIP则需要保留。

  • 缩小会不必要地丢弃空格,仅出于语法原因在必要时保留空格。

  • 缩小删除评论。

  • 代码缩编可以在没有副作用的情况下用较短的名称替换标识符名称。

  • 代码最小化可能会对代码进行微不足道的“编译器优化”,这只有通过实际解析代码才能实现

  • CSS最小化可以消除冗余规则或合并具有相同选择器的规则。


查看完整回答
反对 回复 2019-12-16
?
FFIVE

TA贡献1797条经验 获得超6个赞

你是对的。


缩小与gzip压缩是不同的(如果是这种情况,它们将被称为相同)。例如,用gzip压缩是不一样的:


var myIncrediblyLongNameForThisVariableThatDoesNothingButTakeUpSpace = null;

比缩小最终得到类似:


var a = null;

当然,在大多数情况下,我会说最好的方法是先缩小Gzip,再缩小Gzip,而不只是缩小或gzipping,尽管有时取决于代码,有时缩小或gzipping比两者兼而有之。


查看完整回答
反对 回复 2019-12-16
  • 4 回答
  • 0 关注
  • 692 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信