为什么压缩和Gzip一起使用可以使文件大小比单独使用Gzip更小

3
据我所知: - 缩小文件会检查您的源代码,并替换一些较短的变量、删除空格,进行一些代码置换优化(有时候)。 - gzip 对您的代码进行去重处理。
gzip 与缩小文件不是相互矛盾的吗?很显然,在压缩代码之后,去重处理会更加困难。
但不知怎么的,使用 gzip 和缩小文件可以得到更小的文件大小。
为什么呢?

1
脱口而出,但是多次调用没有参数的函数是可以被“去重”的字符串的一个简单示例...缩小文件大小会将someRidiculousFunction()转换为a(),而gzip则会删除多行调用a()并指向其一个实例的指针。 - PlantTheIdea
2个回答

3

代码的最小化允许永久性地改变您的代码。例如,它可以简单地将变量名foobar替换为变量名a,而不需要记住如何撤销最小化,并且可以丢弃不必要的空格。然而,它无法减少因为所有字符使用相同长度编码或因为两个方法调用中使用相同参数而浪费的空间 - 毕竟,最小化版本仍然需要是有效的代码。

压缩,例如使用gzip,允许生成不再是有效javascript的输出。因此,gzip可以使用不同长度的字符编码,使大括号消耗少于8位,并且可以压缩代码中的公共部分。但是,因为它需要能够恢复原始代码,所以它不能只将您的变量重命名为更短的名称。


0

这是因为需要保留的内容更少。

缩小文件还会尽可能地删除行末、括号和其他冗余代码。冗余的代码不必被压缩。这就是为什么它们两个都比其中任何一个都要小的原因。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接