Gzip是WEB服务器上广泛使用的一种数据压缩格式,开启Gzip后,在访问量大的情况下能显著降低数据传输流量,节省有限的带宽。生活中其实也有类似的处理方式,文件太多太大,就干脆打包成压缩文件发给对方,能有效节省网络传输的时间。
检测必备模块
首先我们需要检查Apache安装时是否开启了Gzip支持,在命令行运行如下命令:
httpd -M
查看是否默认包含了deflate_module 、headers_module、filter_module三个模块,如果有以上三个模块说明Apache已经具备开启Gzip的条件,本博客使用的是阿里云ECS,默认这三个模块都是开启的。这里顺便提一下Apache2.4启用模块的方式,Apache2.4之后的版本并没有将启动模块的语句包含在httpd.conf文件中,而是在上述文件内加了这么一句:
Include conf.modules.d/*.conf
也就是说,开启与关闭模块的命令都被一股脑塞进了conf.modules.d文件夹内,当需要开启或关闭某个模块的时候,需要改去该文件夹内进行设置。
修改Apache配置文件
轻车熟路的打开httpd.conf文件,httpd.conf包含了很多设置信息,为了避免改完之后不知道怎么改回来,可以参考Wordpress的做法,提前复制一份保存为httpd-sample.conf:
<IfModule deflate_module>
SetOutputFilter DEFLATE
DeflateCompressionLevel 6
AddOutputFilter DEFLATE css js txt xml rss html htm
Header append Vary User-Agent env=!dont-vary
SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png|bmp|tif)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI .(?:exe|t?gz|zip|7z|bz2|sit|rar|bin|iso)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI .(?:pdf|doc|docx|xls|xlsx|ppt|pptx)$ no-gzip dont-vary
</IfModule>
重新启动Apache,CentOS6的重启命令如下:
service httpd restart
重新启动Apache,CentOS7的重启命令如下:
systemctl restart httpd
检测是否已经开启Gzip
可以通过站长之家提供的网页Gzip检测工具测试一下自己站点的任意网页,查看是否已经成功开启压缩。类似工具很多,就不再赘述了。