Welcome to IcyRiver'blog

Thursday, August 31, 2006

使用mod_deflate减轻网络流量

主流的浏览器都支持gzip解压缩,这样可以大大减轻网络流量。所以今天试图配置Apache的mod-gzip 模块,想提高网站速度。但是发现该模块只能用在Apache1.3下,似乎Apache2已经不支持mod-gzip模块了。而且, mod_gzip 压缩文件后创建的临时文件是放到磁盘上的,这也会给磁盘 IO 带来严重的问题.。


Apache2使用的压缩模块名为mod_deflate,该模块压缩操作都在内存中进行,放在apache的modules目录下。只要稍加修改httpd.conf配置文件就可以使用了,我的配置过程如下:


1。增加   LoadModule deflate_module modules/mod_deflate.so,
      去掉   LoadModule headers_module modules/mod_headers.so前面的#。


2。 增加 
                 DeflateFilterNote ratio
                 LogFormat ‘”%h %l %u %t %r” %>s %b (%{ratio}n) “%{User-agent}i”‘ deflate
                 CustomLog logs/deflate.log deflate
       在      CustomLog logs/access.log common 前增加 #。


3。在虚拟主机配置块中加入以下代码:


<Location “/”>
 SetOutputFilter DEFLATE
 BrowserMatch ^Mozilla/4 gzip-only-text/html
 BrowserMatch ^Mozilla/4\.0[678] no-gzip
 BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
 SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary
 Header append Vary User-Agent env=!dont-vary
</Location>


mod_deflate


上图是我的Apache服务器压缩文件的情况,由于上面的配置语句  SetEnvIfNoCase Request_URI

\.(?:gif|jpe?g|png)$ no-gzip dont-vary

声明不压缩图片,所有只有文本文件,如php、css、js被压缩。一个8.3k的style.css文件被压缩到了2.2k,明显减少了网络的流量。


察看Apache的日志文件,找到被压缩的style.css文件对应的日志:
“127.0.0.1 - - [31/Aug/2006:21:29:42 +0800] GET /…giraffe2/style.css?.yslowt=1157030982594 HTTP/1.1″ 200 2209 (26) “Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6″


红色数字部分对应着上面的日志配置语句 %b (%{ratio}n) ,表示该文件被压缩后的大小–2.2k和压缩的比率–26% 。

0 Comments:

Post a Comment

<< Home