与GZIP相比,缩小了压缩浏览器的兼容性和优势

Dav*_*och 89 compression optimization gzip zlib deflate


更新2012年2月10日:

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


更新2010年9月11日:

一个测试平台已经为此创建这里




一些背景信息的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会有什么缺点?



更新2010年9月11日:

一个测试平台已经为此创建这里

Dav*_*och 37

更新:浏览器一直在放弃对原始deflate的支持.zOompf已经完成了这个题目了一些非常深入的研究在这里.不幸的是,原始放气似乎不安全.


检查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 缩减需求.


Jos*_*ger 6

Android 1.6浏览器(v4)在页面上的zlib和deflate测试都失败了.我已将它添加到您的列表中.