2012年2月10日更新:

zOompf已经完成了关于here这个主题的一些非常彻底的研究。它胜过以下任何发现。


2010年9月11日更新:

为此here创建了一个测试平台



一些背景信息的GZIP和DEFLATE(zlib)的HTTP 1.1定义:

“'Gzip'是gzip格式,'deflate'是zlib格式
应该避免将第二个称为“zlib”,以避免
与原始的deflate压缩数据格式混淆。而HTTP
1.1 RFC 2616正确指向RFC 1950中的zlib规范
对于“放气”传输编码,有报告
错误产生或预期原始压缩的服务器和浏览器
根据RFC 1951中的deflate规范获取数据
Microsoft产品
。因此,即使使用
zlib格式将是更有效的方法(实际上
,使用“gzip”传输,zlib格式是为设计的)
由于不幸的选择,编码可能更可靠
HTTP 1.1作者的名字。”(来源:http://www.gzip.org/zlib/zlib_faq.html)

所以,我的问题是:如果我使用NO zlib包装器(或gzip,
为此)是否有任何现代浏览器(例如IE6及更高版本,FF,
Chrome,Safari等)无法理解原始压缩
压缩数据(假设HTTP请求 header “Accept-Encoding”包含“deflate”)?

压缩数据将总是比GZIP小几个字节。

如果所有这些浏览器都能成功解码数据,那
缺点是发送RAW deflate而不是zlib?

2010年9月11日更新:

为此here创建了一个测试平台

最佳答案

更新:浏览器已放弃对原始deflate的支持。 zOompf已经完成了关于here这个主题的一些非常彻底的研究。不幸的是,原始放气似乎并不安全。

检查http://www.vervestudios.co/projects/compression-tests/results以获得更多结果。

以下是经过测试的浏览器:

/*  Browser                       DEFLATE      ZLIB     */
    XP Internet Explorer 6        PASS         FAIL
    XP Internet Explorer 7        PASS         FAIL
    XP Internet Explorer 8        PASS         FAIL
    Vista Internet Explorer 8     PASS         FAIL
    XP Firefox 3.6.*              PASS         PASS
    XP Firefox 3.5.3              PASS         PASS
    XP Firefox 3.0.14             PASS         PASS
    Win 7 Firefox 3.6.*           PASS         PASS
    Vista Firefox 3.6.*           PASS         PASS
    Vista Firefox 3.5.3           PASS         PASS
    XP Safari 3                   PASS         PASS
    XP Safari 4                   PASS         PASS
    XP Chrome 3.0.195.27          PASS         PASS
    XP Opera 9                    PASS         PASS
    XP Opera 10                   PASS         PASS
    XP Sea Monkey 1.1.8           PASS         PASS
    Android 1.6 Browser (v4)*     N/A          N/A
    OS-X Safari 4                 PASS         PASS
    OS X Chrome 7.0.517.44        PASS         PASS
    OS X Opera 10.63              PASS         PASS
    iPhone 3.1 Safari             PASS         PASS

* Android发送HTTP请求 header “Accept-Encoding:gzip”。放气是不允许的。

我得出的结论是,我们可以始终发送原始的DEFLATE (当HTTP请求 header “Accept-Encoding”包含“deflate”时),浏览器将能够正确解释编码后的数据。有人可以证明这是错误的吗?

注意:.NET的DEFLATE(System.IO.Compression.DeflateStream)本机实现是原始DEFLATE。它也很烂。请使用zlib.net满足您所有的.NET放气需求。

关于optimization - 降低压缩浏览器的兼容性和优于GZIP的优势,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1574168/

10-10 11:30