首先,让我们定义一些经常混淆的术语:
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 以强制它在命令上给我原始的放气(通过“未记录的功能”)......但是,添加 gzip 标头和预告片并不适合我。
有人知道这样做的.net 库吗?
澄清:
HTTP 1.1 的deflate压缩格式其实就是zlib压缩格式。Zlib 是 deflate 的包装器;它总是有一个 2 字节的头部和一个 4 字节的尾部(当压缩方法和级别相同时)。
Gzip在内部使用与 zlib 相同的压缩数据格式......这是 deflate(原始 deflate,而不是 HTTP 1.1 deflate [这是 zlib])。根据我自己的初步测试,gzip 压缩的数据比 zlib 大 12 倍中的 11 倍。
deflate是一种用于压缩数据的压缩算法。当放气数据周围没有包装器方法(例如,标题或预告片)时,我将其称为“放气”——也许我应该将其称为“原始放气”。
我正在分析这些压缩方法及其在 Web 浏览器中的支持,并且需要对所有三种类型使用单一的压缩方法。