在编码,解码和压缩大小方面,我们已经了解了deflate encoding is a winner over gzip。
那么为什么没有大型网站(我能找到)发送它(当我使用接受它的浏览器时)?
Yahoo claims deflate“效果不佳”。为什么呢?
我维护更喜欢放气的HTTP服务器软件,所以我想知道是否有一些非常好的理由不继续这样做。
答案 0 :(得分:71)
关于规范和HTTP之间的命名存在一些混淆:
但是HTTP uses a different naming:
gzip
由RFC 1952 [25]中描述的文件压缩程序“gzip”(GNU zip)生成的编码格式。此格式是Lempel-Ziv编码(LZ77),具有32位CRC。
deflate
RFC 1950 [31]中定义的“zlib”格式与RFC 1951 [29]中描述的“deflate”压缩机制相结合。
总结一下:
gzip
是 GZIP 文件格式。deflate
实际上是 ZLIB 数据格式。 (但是有些客户也接受deflate
的实际 DEFLATE 数据格式。)“gzip”和“deflate”HTTP 1.1编码有什么区别?
“gzip”是gzip格式,“deflate”是zlib格式。他们应该调用第二个“zlib”来避免与原始deflate压缩数据格式混淆。虽然HTTP 1.1 RFC 2616正确地指向RFC 1950中针对“deflate”传输编码的zlib规范,但是有报告称服务器和浏览器根据RFC 1951中的deflate规范错误地生成或期望原始deflate数据,最明显的是Microsoft 。因此,即使使用zlib格式的“deflate”传输编码将是更有效的方法(事实上正是zlib格式的设计),使用“gzip”传输编码可能更可靠,因为不幸的选择HTTP 1.1作者的名称。
答案 1 :(得分:9)
从我的最小测试开始,大多数HTTPds出现:
因此,要在最受欢迎的服务器(Apache)上发送deflate,您必须维护预编码文件并使用mod_negotiate(您甚至可能必须使用类型映射来更喜欢放气)。
我猜,由于这个麻烦,deflate很少被使用,因此客户端deflate支持中存在的错误更可能存在于gzip支持中。
答案 2 :(得分:7)
查看此网站以获取更多信息: http://web.archive.org/web/20120321182910/http://www.vervestudios.co/projects/compression-tests
根据规范,deflate实际上是zlib(专门为通过网络传输内容而开发的压缩格式)...这是deflate的包装。
但是,Internet Explorer错误地将HTTP 1.1 deflate(zlib)实现为原始deflate。因此,如果您的服务器向IE发送正确的HTTP 1.1 deflate(zlib)内容,它就会窒息。我已经对这个主题进行了一些研究,并且总是将 raw deflate发送到现代浏览器看起来很安全...只是确保它实际上是 raw 而不是zlib。
查看此文章以获取更多信息> Gzip vs Deflate (zlib) revisited
所以我认为有充分的理由继续通过gzip发送deflate。
答案 3 :(得分:6)
据我所知(免责声明:我不是这里的专家,正如我所听到的那样),gzip
使用与deflate
相同的算法,但它有更多的标题内容使它具有更大的尺寸(相对于deflate
)。但是,我认为较少的客户端和代理支持deflate
。
答案 4 :(得分:1)
我想知道同样的事情:)。我认为这可能与旧的(可能是古老的)浏览器的兼容性有关。我在某个地方看到旧版浏览器更容易出现在某些情况下mod_gzipped的缩小内容(?),但谷歌搜索这导致我得出结论,最好停止谷歌搜索。
答案 5 :(得分:0)
ActionScript 3具有本机deflate支持,但对于gzip,您需要使用外部库