Optimization 与GZIP相比,Deflate压缩浏览器的兼容性和优势 2012年2月10日更新:

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”传输编码,有以下报告: 服务器和浏览器错误地产

zOompf在这个问题上已经完成了一些非常深入的研究。它胜过下面的任何发现。


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,我认为这个答案应该被编辑以反映这一点,是的,我同意。现在更新它。