-- TOC --
本文介绍如何在Httpd服务器上,启动gzip压缩功能。
gzip压缩功能的作用,是对Httpd服务器回应客户端的内容,先进行压缩处理,然后再发送给客户端。显然,好处是压缩之后,网络带宽占用会变小,但是服务器CPU的使用率会提高,而且Httpd服务器从收到请求和完成应答的时延也会增大。
不过,开启gzip压缩似乎是很主流的做法,似乎带宽的成本要比CPU的成本高!另一个原因,可能是压缩后,数据包在网络中的传输会更快,反而会降低时延,提高响应速度。
首先在httpd.conf配置文件中,打开如下3个module:
LoadModule deflate_module modules/mod_deflate.so
LoadModule headers_module modules/mod_headers.so
LoadModule filter_module modules/mod_filter.so
为什么是mod_deflate?因为gzip使用deflate算法进行压缩。
Httpd到2.4之后,开启gzip需要打开LoadModule filter_module modules/mod_filter.so这个模块,网络上现有的教程全部都是没有这个说明的。如果不打开这个模块,apache无法启动,出现AddOutputFilterByType的语法错误。
然后需要增加如下一些配置,说明以注释的形式提供:
<IfModule deflate_module>
# 打开压缩功能
SetOutputFilter DEFLATE
# 可选,配置gzip压缩级别,9最高,1最低,一般保持默认6
DeflateCompressionLevel 9
# 对.gif,.jpg,.jpeg,.png这几类图片文件,不做压缩
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary
# 设置要压缩的MIME类型
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript
<IfModule/>
根据你网站存放的文件类型,还可以增加不压缩的范围,或者增加要压缩的范围。
配置修改完后,记得重启生效!
简单的检查办法,就是查看服务器的response内容,很有多方式可以查看response,这里用firefox举例说明:
在firefox中打开Network调试界面,然后刷新你要查看的网页,网页打开后,选择你要查看的File资源,这时就能看到服务器的response内容:
看到有Content-Encoding: gzip,就表示服务器配置成功了!
完全可以通过在服务器端,预先将静态资源做压缩,而不是等到HTTP请求到来的时候再压,这样响应速度和网络带宽占用都能改善。
但,应该如何配置?
本文链接:https://cs.pynote.net/net/httpd/202110016/
-- EOF --
-- MORE --