最近无事研究一些Web的优化,用工具page speed检测网站时发现还没有开启gzip压缩,于是上网找来资料实验一下;在apache2.0以上(包括apache2.0)的版中gzip压缩使用的是mod_deflate模块,下面是具体配置步骤
第1步
LoadModule deflate_modulemodules/mod_deflate.so
LoadModule headers_modulemodules/mod_headers.so
打开httpd.conf后,先将上面两行配置前面的#号去掉,这样apache就会启用这两个模块,其中mod_deflate是压缩模块,就是对要传输到客户端的代码进行gzip压缩;mod_headers模块的作用是告诉浏览器页面使用了gzip压缩,如果不开启mod_headers那么浏览器可能会对gzip压缩过的页面进行下载,而无法正常显示。
第2步
在httpd.conf中加入以下代码,可以加到任何空白地方,不了解apache的朋友,如果担心加错地方,就放到http.conf文件的最后一行,如果是虚拟服务器可以写.htaccess文件里面,然后放在项目下即可。
<IfModule mod_deflate.c>
SetOutputFilter DEFLATE #必须的,就像一个开关一样,告诉apache对传输到浏览器的内容进行压缩
SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-gzip dont-vary #设置不对后缀gif,jpg,jpeg,png(本身已经是高压缩文件)的图片文件进行压缩
SetEnvIfNoCase Request_URI .(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary #同上,就是设置不对exe,tgz,gz(本身已经是高压缩文件)的文件进行压缩
SetEnvIfNoCase Request_URI .(?:pdf|mov|avi|mp3|mp4|rm)$ no-gzip dont-vary #同上,就是设置不对pdf,mp3(本身已经是高压缩文件)等的文件进行压缩
AddOutputFilterByType DEFLATE text/* #设置对文件是文本的内容进行压缩,例如text/html text/css text/plain等
AddOutputFilterByType DEFLATE application/ms* application/vnd* application/postscript application/javascript application/x-javascript #这段的意思是对javascript文件进行压缩
AddOutputFilterByType DEFLATE application/x-httpd-php application/x-httpd-fastphp #这段是告诉apache对php类型的文件进行压缩
</IfModule>
重启apache,若重启失败,请把注释去掉
Nginx设置
http{
gzip on;
gzip_min_length 1k; #最少长度压缩
gzip_buffers 4 16k; #以多少16k4倍请求内存
gzip_http_version 1.1; #压缩版本
gzip_comp_level 6; #压缩率1-9 等级越高压缩越大,消耗CPU越大
gzip_types text/plain application/x-javascript text/css application/xml; ##压缩格式,无论是不写html都是默认压缩
gzip_vary on; ##判断浏览器是否支持解压,避免浏览器不支持解压浪费资源去压缩文件
}