taoCMS是基于php+sqlite/mysql的国内最小(100Kb左右)的功能完善、开源免费的CMS管理系统

关于 gzip, deflate, zlib, LZ77

2013-11-26

LZ77: 是一种基于字典的无损数据压缩算法(还有 LZ78, LZW 等)

deflate: 也是一种数据压缩算法,实际上就是先用 LZ77 压缩,然后用霍夫曼编码压缩

gzip: 是一种文件结构,也可以算一种压缩格式,通过 defalte 算法压缩数据,然后加上文件头和CRC校验

zlib: 是一个提供了 deflate, zlib, gzip 压缩方法的函数库;也是一种压缩格式(用 deflate 压缩数据,然后加上 zlib 头和 CRC 校验)

PHP 中的 zlib 扩展提供了对以上压缩格式的支持,其中的函数和压缩格式的对应关系如下:

gzdeflate, gzinflate 对应 deflate

gzcompress, gzuncompress 对应 zlib 格式压缩

gzencode, gzdecode 对应 gzip 格式压缩

Python 中的 zlib 模块也提供了上述压缩格式的支持,不过接口很“隐晦”:

zlib.compress  对数据进行 zlib 格式压缩,好像压缩的时候只支持这一种格式,不过你可以通过把压缩后的数据去掉两字节 zlib 头和末尾 4 字节的 CRC 校验得到 deflate 格式的压缩数据(zlib_compressed[2:-4]);对于 gzip 压缩格式可以通过 gzip 模块得到。

zlib.decompress(string[,wbits[,bufsize]]) 解压更折腾,压缩格式是通过 wbits 参数控制的:

  • [8, 15]:解压 zlib 格式的数据
  • [-8, -15]:解压 deflate 格式数据
  • [16, 30]:解压 gzip 格式数据

另外,对于 Apache 的页面压缩:

Content-Encoding: gzip 对应 gzip 格式压缩

Cotent-Encoding: deflate 对应  deflate 压缩

类别:技术文章 | 阅读:261741 | 评论:0 | 标签:gzip deflate zlib

想收藏或者和大家分享这篇好文章→

“关于 gzip, deflate, zlib, LZ77”共有0条留言

发表评论

姓名:

邮箱:

网址:

验证码:

公告

taoCMS发布taoCMS 3.0.2(最后更新21年03月15日),请大家速速升级,欢迎大家试用和提出您宝贵的意见建议。

捐助与联系

☟请使用新浪微博联系我☟

☟在github上follow我☟

标签云