apcache的gzip与deflate对比

来源:互联网 发布:mysql的可视化界面 编辑:程序博客网 时间:2024/06/11 22:27


apcache的gzip与deflate对比

1. 两者都是使用Gzip压缩算法

2. deflate压缩速度略快,gzip压缩比略高。默认情况下,gzip会比deflate多压4%-6%

3. gzip对服务器的CPU占用要高一些,deflate是专门为保护服务器性能的压缩模块,它仅需很小的资源来压缩文件

mod_deflate可以使用DeflateCompressionLevel指令来设置压缩级别,指令范围1-9(1:压缩速度最快,压缩后文件最大;9:压缩速度最慢,压缩后文件最小),默认设置为6。

最后,推荐使用deflate进行压缩

---------------------------------------------------------------------------

gzip是一种数据格式,默认且目前仅使用deflate算法压缩data部分;
deflate是一种压缩算法,是huffman编码的一种加强。

deflate与gzip解压的代码几乎相同,可以合成一块代码。
区别仅有:

deflate使用inflateInit(),而gzip使用inflateInit2()进行初始化,比 inflateInit()多一个参数: -MAX_WBITS,表示处理raw deflate数据。因为gzip数据中的zlib压缩数据块没有zlib header的两个字节。使用inflateInit2时要求zlib库忽略zlib header。在zlib手册中要求windowBits为8..15,但是实际上其它范围的数据有特殊作用,见zlib.h中的注释,如负数表示raw deflate。
Apache的deflate变种可能也没有zlib header,需要添加假头后处理。即MS的错误deflate (raw deflate).zlib头第1字节一般是0x78, 第2字节与第一字节合起来的双字节应能被31整除,详见rfc1950。例如Firefox的zlib假头为0x7801,python zlib.compress()结果头部为0x789c。

deflate 是最基础的算法,gzip 在 deflate 的 raw data 前增加了 10 个字节的 gzheader,尾部添加了 8 个字节的校验字节(可选 crc32 和 adler32) 和长度标识字节。



0 0
原创粉丝点击