首先,让我们定义一些常见混淆的术语:
deflate = compression_algorithm;
zlib = header + deflate + trailer;
gzip = header + deflate + trailer;
我正在寻找一个库,它可以让我基本上执行以下操作:
if(method == "gzip"){
Response.Filter = new CompressionLibrary.OutputStream(Response.Filter, CompressionLibrary.Formats.GZIP);
}
else if(method == "deflate"){
Response.Filter = new CompressionLibrary.OutputStream(Response.Filter, CompressionLibrary.Formats.DEFLATE);
}
else if(method == "zlib"){
Response.Filter = new CompressionLibrary.OutputStream(Response.Filter, CompressionLibrary.Formats.ZLIB);
}
我正在寻找一种比较测试3种压缩格式在网页上使用的方法。我希望每种格式的deflate压缩算法是完全相同的实现。我已经修改了zlib.net以强制它按命令给我原始deflate(通过“未记录的功能”)......但是,添加gzip标头和尾巴有点超出了我的能力范围。
有没有人知道一个可以做到这一点的.NET库?
澄清:
HTTP 1.1的deflate压缩格式实际上是zlib压缩格式。Zlib是deflate的包装器;当压缩方法和级别相同时,它具有2字节头和4字节尾部,总是存在的。
Gzip在内部使用与zlib相同的压缩数据格式...即deflate(原始deflate,而不是HTTP 1.1 deflate [即zlib])。根据我自己的初步测试,gzipped数据比zlib大11比12。
deflate是用于压缩数据的压缩算法。当没有包装器方法(例如,deflated数据周围没有标题或尾部)时,我称其为“deflate” - 也许我应该称其为“原始deflate”。
我正在分析这些压缩方法及其在Web浏览器中的支持,并需要使用单个压缩方法来处理所有三种类型的压缩。