在搭建web服务器的时候有时因为服务器带宽比较小,而网站内容较多,内容加载较慢,此时建议站长们开启Apache的GZIP压缩功能,注意:开启GZIP之后会增加服务器的压力,不过一般服务器还是可以承受的,用户的访问速度可以比之前快好几倍,总之GZIP压缩功能利大于弊,建议开启,下面就说一下如何开启Apache的GZIP压缩功能。
GZIP压缩功能简介:
GZIP压缩是一个经常被用到的WEB性能优化的技巧,它主要是对页面代码,CSS,Javascript,PHP等文件进行压缩,而且在压缩的前后,文件的大小会有明显的改变,从而达到网站访问加速的目的。
GZIP网页压缩,是一种WEB服务器与浏览器之间共同遵守的协议,也就是说WEB服务器和浏览器都必须支持该技术才能实现GZIP压缩,而当下主流的浏览器都是支持GZIP压缩,包括IE6、IE7、IE8、IE9、FireFox、谷歌浏览器、Opera等,而常见的WEB服务器通常有Apache和IIS两种。GZIP网页压缩,是一种WEB服务器与浏览器之间共同遵守的协议,也就是说WEB服务器和浏览器都必须支持该技术才能实现GZIP压缩,而当下主流的浏览器都是支持GZIP压缩,包括IE6、IE7、IE8、IE9、FireFox、谷歌浏览器、Opera等,而常见的WEB服务器通常有Apache和IIS两种。
GZIP压缩时,WEB服务器与浏览器之间的协商过程:
1、首先浏览器请求某个URL地址,并在请求的开始部分头(head) 设置属性accept-encoding值为gzip、deflate,表明浏览器支持gzip和deflate这两种压缩方式(事实上deflate也是使用GZIP压缩协议,在之后的内容之我们会介绍二者之间的区别)。
2、WEB服务器接收到请求后判断浏览器是否支持GZIP压缩,如果支持就传送压缩后的响应内容,否则传送不经过压缩的内容。
3、浏览器获取响应内容后,判断内容是否被压缩,如果是压缩文件则解压缩,然后显示响应页面的内容。
GZIP压缩的比率往往在3倍到10倍,也就是本来90k大小的页面,采用压缩后实际传输的内容大小只有28至30K大小,这可以大大节省服务器的网络带宽,同时如果应用程序的响应足够快时,网站的速度瓶颈就转到了网络的传输速度上,因此内容压缩后就可以大大的提升页面的浏览速度。在实际应用中,我们并不需要对网站所有文件都进行压缩,只需要对静态文件进行压缩就可以了,比如Javascript、CSS及和HTML文件。对其他文件进行压缩并不会给WEB性能带来太多的改观,并且对网站开启GZIP功能是需要牺牲部分服务器性能的。而且对于FLASH文件来说开启GZIP压缩之后还会影响其效果。 以上简介内容来自 http://blog.hehehehe.cn/a/11471.htm
下面开始进入正题,介绍如何在windows和Linux环境下开启GZIP压缩功能。
Windows环境下
1.开启在httpd.conf 文件里开启GZIP模块 LoadModule deflate_module modules/mod_deflate.so ,只需去掉前面的#即可。
2. 在httpd.conf中增加下面的内容:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
[cce_xml] <Location /> # Insert filter SetOutputFilter DEFLATE # Netscape 4.x has some problems... BrowserMatch ^Mozilla/4 gzip-only-text/html # Netscape 4.06-4.08 have some more problems BrowserMatch ^Mozilla/4\.0[678] no-gzip # MSIE masquerades as Netscape, but it is fine BrowserMatch \bMSIE !no-gzip !gzip-only-text/html # Don't compress images SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary </Location> |
3.重启Apache服务即可
Linux环境下(测试环境为centOS 7.0)
1、进入/etc/httpd/conf下打开httpd.conf文件,命令为vi /etc/httpd/conf/httpd.conf (注意一下,此文件的路径为我的Apache安装路径,不一定和你的一样,请自行寻找!!)。
2、开启Gzip压缩功能,即去掉 LoadModule deflate_module modules/mod_deflate.so 这行前面的#号,默认已经去掉。
3、在文件最下面添加以下代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
[cce_xml] # mod_deflate: <ifmodule mod_deflate.c> DeflateCompressionLevel 6 AddOutputFilterByType DEFLATE text/plain AddOutputFilterByType DEFLATE text/html AddOutputFilterByType DEFLATE text/xml AddOutputFilterByType DEFLATE text/css AddOutputFilterByType DEFLATE text/javascript AddOutputFilterByType DEFLATE application/xhtml+xml AddOutputFilterByType DEFLATE application/xml AddOutputFilterByType DEFLATE application/rss+xml AddOutputFilterByType DEFLATE application/atom_xml AddOutputFilterByType DEFLATE application/x-javascript AddOutputFilterByType DEFLATE application/x-httpd-php AddOutputFilterByType DEFLATE image/svg+xml </ifmodule> |
注意 DeflateCompressionLevel 6 为压缩率 去值为0-9之间,可修改。
4、重启Apache服务,命令为:serverc httpd restart。
检查GZIP压缩是否成功开启
检查是否成功开启,可通过火狐浏览器中的调试工具查看服务器的响应头检查。
开启之前:
开启之后:
从响应头中的Content-Encoding:"gzip"可看出,GZIP压缩功能已经正常开启。
从前后的响应头中的Content-Length:7518和Content-Length:2280可以看出,返回的数据明显大大减小服务器的响应速度将大大提升。