【发布时间】:2010-12-07 03:31:05
【问题描述】:
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 规范 对于“deflate”传输编码,有报道称 错误地产生或期望原始放气的服务器和浏览器 RFC 1951 中的 deflate 规范的数据,最值得注意的是 微软产品。因此,即使使用“放气”传输编码 zlib 格式将是更有效的方法(事实上正是 zlib 格式的设计目的),使用“gzip”传输 由于不幸的选择,编码可能更可靠 HTTP 1.1 作者的名字。”(来源:http://www.gzip.org/zlib/zlib_faq.html)
所以,我的问题是:如果我发送没有 zlib 包装器(或 gzip, 就此而言)是否有任何现代浏览器(例如,IE6 及更高版本、FF、 无法理解原始放气的 Chrome、Safari 等) 压缩数据(假设 HTTP 请求头“Accept-Encoding”包含“deflate”)?
Deflate 数据总是比 GZIP 小几个字节。
如果所有这些浏览器都可以成功解码数据,那 发送 RAW deflate 而不是 zlib 有缺点吗?
2010 年 9 月 11 日更新:
已经为此here创建了一个测试平台
【问题讨论】:
-
您介意解释一下为什么 System.IO.Compression.DeflateStream 比 zlib.net 更烂吗?除了一个人提到它“没有特别好的压缩比”之外,谷歌并没有向我展示太多相关的东西。
-
是的,.net 的 gzip 和 deflate 方法的压缩率似乎都没有达到应有的水平。但是,我没有在两者之间进行任何速度基准测试(zlib.net vs. native .net)。
-
为什么不直接记录测试用例的结果?
-
我一直在 System.IO.Compression 库中四处寻找,它似乎使用静态/预定义树 - 因此压缩没有针对特定流进行优化。应该是最快的方法,但肯定会产生较差的压缩比。
-
@JoelMueller 这可以解释:virtualdub.org/blog/pivot/entry.php?id=335
标签: optimization compression gzip zlib deflate