Optimization 与GZIP相比,Deflate压缩浏览器的兼容性和优势 2012年2月10日更新:
zOompf在这个问题上已经完成了一些非常深入的研究。它胜过下面的任何发现。Optimization 与GZIP相比,Deflate压缩浏览器的兼容性和优势 2012年2月10日更新:,optimization,compression,gzip,zlib,deflate,Optimization,Compression,Gzip,Zlib,Deflate,zOompf在这个问题上已经完成了一些非常深入的研究。它胜过下面的任何发现。 2010年9月11日更新: 已经为此创建了一个测试平台 HTTP 1.1 GZIP和DEFLATE(zlib)的定义,了解一些背景信息: “'Gzip'是Gzip格式,'deflate'是zlib格式。 应该把第二个叫做“zlib”来避免 与原始deflate压缩数据格式混淆 1.1 RFC 2616正确指向RFC 1950中的zlib规范 对于“deflate”传输编码,有以下报告: 服务器和浏览器错误地产
2010年9月11日更新: 已经为此创建了一个测试平台
HTTP 1.1 GZIP和DEFLATE(zlib)的定义,了解一些背景信息: “'Gzip'是Gzip格式,'deflate'是zlib格式。 应该把第二个叫做“zlib”来避免 与原始deflate压缩数据格式混淆 1.1 RFC 2616正确指向RFC 1950中的zlib规范 对于“deflate”传输编码,有以下报告: 服务器和浏览器错误地产生或期望原始数据 数据符合RFC 1951中的放气规范,尤其是 Microsoft产品。因此,即使使用 zlib格式将是更有效的方法(事实上正是如此) zlib格式的设计目的是什么(使用“gzip”传输) 由于选择了一种不幸的编码方式,编码可能更可靠 HTTP 1.1作者的姓名。”(来源:) 所以,我的问题是:如果我发送的原始deflate数据没有zlib包装器(或gzip), 就这点而言)是否有任何现代浏览器(如IE6及以上、FF、, 铬、Safari等)无法理解原始放气 压缩数据(假设HTTP请求头“Accept Encoding”包含“deflate”) Deflate数据总是比GZIP小几个字节 如果所有这些浏览器都能成功解码数据,那会是什么呢 发送原始通缩数据而不是zlib有缺点吗
2010年9月11日更新:
据我所知,已经为这个创建了一个测试平台,是的-基本上你“总是可以发送原始放气,一切都会好起来”。。。不存在“总是”,但最重要的是所有情况。如果没有,这就是浏览器的问题。Android 1.6浏览器(v4)无法通过页面上的zlib和deflate测试。我已将其添加到您的列表中。是否默认情况下使用gzip发送的mod_DEFLATE来添加输出过滤器ByType DEFLATE。zOompf在这个问题上已经完成了一些非常深入的研究。不幸的是,使用未经处理的放气似乎不安全。
检查更多结果 以下是经过测试的浏览器:
/* 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请求头“接受编码:gzip”。不允许放气
我的结论是,我们可以始终发送原始DEFLATE(当HTTP请求头“接受编码”包含“DEFLATE”时),浏览器将能够正确解释编码数据。有人能证明这是错的吗
注意:.NET的DEFLATE本机实现(System.IO.Compression.DeflateStream)是原始DEFLATE。这也很糟糕。请满足您所有的.NET泄气需求。您是否介意详细介绍一下为什么System.IO.Compression.DeflatestStream与zlib.NET相比很差劲?谷歌并没有向我展示太多相关的东西,只是有人提到它“没有特别好的压缩比”。没错,.net的gzip和deflate方法的压缩比似乎都没有达到应有的水平。但是,我还没有在这两者之间做过任何速度基准测试(zlib.net与native.net)。为什么不直接记录测试用例的结果呢?我已经在System.IO.Compression库中搜索过了,它似乎使用了一个静态/预定义的树-因此压缩没有针对特定流进行优化。应该是最快的方法,但肯定会产生很差的压缩比。@JoelMueller这可以解释:谢谢!Android的浏览器发送什么内容编码?它发送“接受编码:gzip”。我试图找到原始deflate失败的情况。根据规范,它应该在所有浏览器中都会失败。原始
deflate
(即不是zlib,根本没有标题)只有在编码:gzip
和(仅在chrome v24中测试)的情况下才能在IE7中工作。编码:deflate在chrome中。嘿,保罗,我觉得我在和名人说话……你无处不在。:-)无论如何,AddOutputFilertByType DEFLATE
gzip默认情况下对响应进行压缩,而不是对其进行压缩(据我所知)Gzip
是deflate
+一个10字节的页眉+8字节的页脚-这意味着Gzip
总是比deflate
大…那么我们为什么要使用Gzip呢?(有关gzip的组成部分,请参阅)。话虽如此,我不知道如何将deflate
设置为Apache中首选的压缩方法。您能否更具体地介绍一下使用zlib.net进行deflate的方法?这与上面的图表有什么关系,上面说原始的deflate可以工作,但zlib在某些xpie情况下不能工作?自API 9以来,Android支持deflate压缩。请参阅:了解更多信息information@DavidMurdoch从你的测试中得到的唯一合理的结果似乎永远不会使用deflate,我认为这个答案应该被编辑以反映这一点,是的,我同意。现在更新它。