gzip原理小透明 | Web高能短文系列

393 阅读1分钟

web服务器打开gzip,可以极大的减小http传输数据大小,从而减少请求的响应时间,对于请求量大的公司来说,可以省下一大笔开支。

那打开gzip为什么可以压缩数据呢?

因为gzip用了两种压缩算法:LZ77和Huffman编码。

  • LZ77
    这种算法类似正则的贪婪算法,比如我们又一段数据ABCDEFGADABCDEFG,这边会出现ABCDEFG的重复数据段,那后面重复段落,用相同段落距离和长度就可以表示,这边的话可以缩小长度为ABCDEFGAD(10,7)
  • Huffman编码
    我找到一篇极易理解的文章来学习它 HUFFMAN 编码压缩算法

gzip就是先用LZ77再用Huffman来实现压缩的。

然后提醒大家并不是所有请求打开gzip都是更好的。

比如说图片、PDF等资源文件请求打开gzip反而会增大响应时间和浪费cpu计算,为什么呢?
因为图片等资源本来也就已经用了压缩算法,再通过gzip算法压缩一遍,不但无法再压缩内容,反而会增大文件头尾信息部分,且浪费gzip压缩时的计算成本。

那最后再放两个文章引索: