首先,让我们定义一些容易混淆的术语:
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 header 和预告片几乎不符合我的要求。
任何人都知道这样做的 .net 库吗?
说明:
HTTP 1.1 的 deflate 压缩格式其实就是 zlib 压缩格式。 Zlib 是 deflate 的包装器;它有一个 2 字节的头部和一个 4 字节的尾部, 总是 (当压缩方法和级别相同时)。
Gzip 在内部使用与 zlib 相同的压缩数据格式...这是 deflate(原始 deflate,而不是 HTTP 1.1 deflate [即 zlib])。根据我自己的初步测试,gzip 压缩的数据比 zlib 大 12 倍中的 11 倍。
deflate 是一种用于压缩数据的压缩算法。当压缩数据周围没有包装器方法(例如, header 或拖尾)时,我将其称为“deflate”——也许我应该将其称为 “raw deflate” 。
我正在分析这些压缩方法及其在 Web 浏览器中的支持,并且需要对所有三种类型使用一种压缩方法。
最佳答案
DotNetZip 执行 RFC 1950 (ZLIB) 、 RFC 1951 (DEFLATE) 和 RFC 1952 (GZIP) 。
它对所有三个使用相同的底层压缩引擎。
DotNetZip 也可以处理 ZIP 文件。
关于.net - .net 中用于 deflate、gzip 和 zlib 的一个库,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3681516/