最近的几台 VPS 上,用的都是 nginx 作为 Web 服务器,通常我会用最新的版本,比如前几天在安装的就是 Nginx 1.9.7。
在配置 Nginx 的时候,会遇到一个参数就是有关 Gzip 的。首先要打开 Gzip ,然后就是要设置 Gzip 的压缩比率, gzip_comp_level。
根据 Nginx 的手册。
Syntax: gzip_comp_level level; Default: gzip_comp_level 1; Context: http, server, location
gzip 的压缩参数值的范围是从1到9。很多参考资料上写的都是建议用4,那么到底多少合适,为什么呢?
刚好安装的是一个 phpBB 的论坛程序,在安装完成后,均是默认值的情况下,把这个参数,从1 到 9,以及关闭 gzip 的情况都测试了一下,看看传输的数据有多少。
压缩的内容主要就是CSS和js文件,以及html文件。
整个页面,包括各种图片,就是这个页面所有的内容的数据传输,简单测试结果如下:
关闭gzip: 317KB
gzip 压缩参数 1: 125KB
gzip 压缩参数 2: 121KB
gzip 压缩参数 3: 119KB
gzip 压缩参数4: 113KB
gzip 压缩参数5: 111KB
gzip 压缩参数 6: 110KB
gzip 压缩参数 7: 110KB
gzip 压缩参数 8: 110KB
gzip 压缩参数 9: 110KB
今天我又做了一个测试,如下。
还是这个程序,不过我测试的时候,分别记录了几个 css 文件和 js 文件的压缩情况。
详细的数据就不贴了,说个总数吧,一共是1个HTML文件,5个CSS文件,4个JS文件,都是数据文件比较大的,也很常见的几个,比如jQuery之类的。
在没有开启压缩的情况下,一共是296.6KB,在不同的压缩参数下,其数据量会逐渐减少,从下图来看,可以看出,最左侧的是gzip关闭,就是原始的数据大小,往右就是 gzip_comp_level 参数从 1 到 9,在参数从5之后,就几乎没有什么变化了。
点击上图可以看到详细数据,想想还是把具体的数字也分享出来,用的是Google Sheets。
当然随着压缩率的提高,所消耗的CPU也会越来越多,建议值是4,但是DavidYin的建议是直接用5。因为每提高一级压缩,数据就减少大约2到3KB,而从5到6,只有减少大约0.5KB,再之后也几乎没有什么变化了。所以就直接设置 gzip_comp_level 5
对于CPU的消耗,我觉得还是不是那么的厉害,毕竟静态文件,还可以设置过期头,让它的有效缓存期长一点,比如设置成半年一年的。实际上CPU的压力在这上面是没有那么大的。