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/