前端在性能优化那块有提到过gzip,但是gzip 的实现原理只是简单提了一下是基于deflate的算法,使用的是LZ77 + huffman Code。今天就来详细的总结下原理,不过有些问题还是没搞清楚,什么问题后面再说。 在这之前有个问题要先说下,nginx 和 webpack 中都是能做 gzip 压缩的,那有什么区别呢? web 服务器(nginx)在向客户端发送gzip文件的时候,会先在本地文件系统查找 .gz 的文件,如果没有,则会去生成一份。生成的时候肯定会占用cpu的资源,所以当请求量比较大的时候,会占用较多的cpu来生成gz文件。而 webpack 的 gzip 则是在编译阶段就生成,所以服务器不用再生成,可以达到减少cpu资源占用的目的。 LZ77LZ77 这个算法是两个以色列的大神 Lempel 和 Ziv 于1977 年提出的,所以简称为LZ77。 LZ77原理:压缩原理其实很简单,就是找出那些重复出现的字符串,然后用更短的符号代替, 从而达到缩短字符串的目的。比如