apache mod_expires缓存静态文件
[摘要]gzip是GNUzip的缩写,它是一个GNU自由软件的文件压缩程序。本文介绍修改Apache配置文件开启gzip压缩传输。
最近无事研究一些Web的优化,用工具pagespeed检测网站时发现还没有开启gzip压缩,于是上网找来资料实验一下;在apache2.0以上(包括apache2.0)的版中gzip压缩使用的是mod_deflate模块,下面是具体配置步骤
第1步
LoadModuledeflate_modulemodules/mod_deflate.so
LoadModuleheaders_modulemodules/mod_headers.so
打开httpd.conf后,先将上面两行配置前面的#号去掉,这样apache就会启用这两个模块,其中mod_deflate是压缩模块,就是对要传输到客户端的代码进行gzip压缩;mod_headers模块的作用是告诉浏览器页面使用了gzip压缩,如果不开启mod_headers那么浏览器就会对gzip压缩过的页面进行下载,而无法正常显示。
第2步
在httpd.conf中加入以下代码,可以加到任何空白地方,不了解apache的朋友,如果担心加错地方,就放到http.conf文件的最后一行,如果是虚拟服务器可以写.htaccess文件里面,然后放在项目下即可。
<IfModulemod_deflate.c>
SetOutputFilterDEFLATE#必须的,就像一个开关一样,告诉apache对传输到浏览器的内容进行压缩
SetEnvIfNoCaseRequest_URI.(?:gif|jpe?g|png)$no-gzipdont-vary#设置不对后缀gif,jpg,jpeg,png的图片文件进行压缩
SetEnvIfNoCaseRequest_URI.(?:exe|t?gz|zip|bz2|sit|rar)$no-gzipdont-vary#同上,就是设置不对exe,tgz,gz。。。的文件进行压缩
SetEnvIfNoCaseRequest_URI.(?:pdf|mov|avi|mp3|mp4|rm)$no-gzipdont-vary
AddOutputFilterByTypeDEFLATEtext/*#设置对文件是文本的内容进行压缩,例如text/htmltext/csstext/plain等
#这段代码你只需要了解application/javascriptapplication/x-javascript这段就可以了,这段的意思是对javascript文件进行压缩
AddOutputFilterByTypeDEFLATEapplication/ms*application/vnd*application/postscriptapplication/javascriptapplication/x-javascript
#这段是告诉apache对php类型的文件进行压缩Add
OutputFilterByTypeDEFLATEapplication/x-httpd-phpapplication/x-httpd-fastphp
BrowserMatch^Mozilla/4gzip-only-text/html#Netscape4.x有一些问题,所以只压缩文件类型是text/html的
BrowserMatch^Mozilla/4.0[678]no-gzip#Netscape4.06-4.08有更多的问题,所以不开启压缩
BrowserMatch\bMSIE!no-gzip!gzip-only-text/html#IE浏览器会伪装成Netscape,但是事实上它没有问题
</IfModule>
本配置到这里apache中的gzip压缩就配置完成,重启apache后,新的配置就会生效。最后再用工具检查一下,果然分数提高了很多~呵呵。不过开启gzip功能需要额外CPU资源开销。
http://down.chinaz.com/server/201202/1645_1.htm