Dav*_*och 89 compression optimization gzip zlib deflate
zOompf已经完成了这个题目了一些非常深入的研究在这里.它胜过下面的任何发现.
一些背景信息的GZIP和DEFLATE(zlib)的HTTP 1.1定义:
"'Gzip'是gzip格式,'deflate'是zlib格式.它们应该调用第二个'zlib'来避免与原始deflate压缩数据格式混淆.虽然HTTP 1.1 RFC 2616正确指向RFC 1950中针对'deflate'传输编码的zlib规范,有报告称服务器和浏览器根据RFC 1951中的deflate规范错误地生成或期望原始deflate数据,最明显的是Microsoft产品.所以尽管'deflate'使用zlib格式的传输编码将是更有效的方法(实际上正是 zlib格式的设计),使用'gzip'传输编码可能更可靠,因为HTTP上的名称选择不幸1.1作者." (来源:http://www.gzip.org/zlib/zlib_faq.html)
所以,我的问题是:如果我使用NO zlib包装器发送RAW deflate数据(或gzip,就此而言)是否有任何现代浏览器(例如,IE6和更高版本,FF,Chrome,Safari等)无法理解原始的deflate压缩数据(假设HTTP请求标头"Accept-Encoding"包含"deflate")?
放气数据总是比GZIP小几个字节.
如果所有这些浏览器都能成功解码数据,那么发送RAW deflate而不是zlib会有什么缺点?
Dav*_*och 37
检查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
Run Code Online (Sandbox Code Playgroud)
*Android发送HTTP请求标头"Accept-Encoding:gzip".不允许放气.
我得出结论,我们总是可以发送原始 DEFLATE(当HTTP请求头"Accept-Encoding"包含"deflate"时),浏览器将能够正确解释编码数据.有人可以证明这是错的吗?
注意:.NET的DEFLATE(System.IO.Compression.DeflateStream)的本机实现是原始DEFLATE.它也很糟糕.请使用zlib.net满足您的所有.NET 缩减需求.