我们知道 mod_gzip 是用来在服务器端把客户请求的内容压缩后发送给客户端的一个 apache 模块。本站的 zope 通过 fastcgi 来实现和 apache 的结合,apache 是解析 html 页面的服务程序。安装好 mod_gzip 后就即能压缩普通静态页面也能压缩 zope 文档。
一、安装
http://www.hyperspacecommunications.com/products/mod_gzip.html
页面上有 mod_gzip 的二进制码版本和源码下载。如果你使用前者的话,直接把文件拷贝到 apache home 的 libexec 目录下就可以了。下载 mod_gzip.c 后,如果你的 apache 用 dso 模式安装的话,用下面简单的命令就可以安装了:
# /www/bin/apxs -i -a -c mod_gzip.c
二、配置
安装完毕以后把下列配置加入 httpd.conf :
# mod_gzip 配置
loadmodule gzip_module libexec/mod_gzip.so
addmodule mod_gzip.c
mod_gzip_on yes
mod_gzip_minimum_file_size 1002
mod_gzip_maximum_file_size 0
mod_gzip_maximum_inmem_size 60000
mod_gzip_item_include mime “application/x-httpd-php”
mod_gzip_item_include mime “text/*”
# 压缩 zope 的内容:
mod_gzip_item_include file “[^.]*$”
mod_gzip_item_include mime “httpd/unix-directory”
mod_gzip_dechunk yes
mod_gzip_temp_dir “/tmp”
mod_gzip_keep_workfiles no
mod_gzip_item_include file “\.php$”
mod_gzip_item_include file “\.txt$”
mod_gzip_item_include file “\.html$”
mod_gzip_item_exclude file “\.css$”
mod_gzip_item_exclude file “\.js$”
并添加下面的行:
logformat “%h %l %u %t \”%r\” %>s %b \”%{referer}i\” \”%{user-agent}i\” mod_gzip: %{mod_gzip_compression_ratio}npct.” mod_gzip
把对应虚拟主机配置中的日志文件参数修改为 mod_gzip
三、压缩效果
这样,我们得到类似以下的日志文件:
61.169.41.13 – – [02/mar/2002:01:24:29 -0500] “get /pipermail/freelamp/2002-march/000026.html http/1.1” 200 72848 “http://www.freelamp.com/pipermail/freelamp/2002-march/subject.html” “mozilla/4.0 (compatible; msie 6.0; windows nt 5.0; q312461; netcaptor 6.5.0)” mod_gzip: 54pct.
61.169.41.13 – – [02/mar/2002:01:24:52 -0500] “get /new/publish/1003233602/index_html http/1.1” 200 4304 “http://www.freelamp.com/new/publish/search?subject=zope&op=articles” “mozilla/4.0 (compatible; msie 6.0; windows nt 5.0; q312461; netcaptor 6.5.0)” mod_gzip: 65pct.
61.169.41.13 – – [02/mar/2002:01:24:53 -0500] “get /new/publish/global_css http/1.1” 200 629 “http://www.freelamp.com/new/publish/1003233602/index_html” “mozilla/4.0 (compatible; msie 6.0; windows nt 5.0; q312461; netcaptor 6.5.0)” mod_gzip: 73pct.
61.169.41.13 – – [02/mar/2002:01:24:54 -0500] “get /new/publish/images/sitetitle_img http/1.1” 304 0 “http://www.freelamp.com/new/publish/1003233602/index_html” “mozilla/4.0 (compatible; msie 6.0; windows nt 5.0; q312461; netcaptor 6.5.0)” mod_gzip: 0pct.
61.169.41.13 – – [02/mar/2002:01:26:21 -0500] “get /new/publish/index_html http/1.1” 200 7317 “http://www.freelamp.com/new/publish/1003233602/index_html” “mozilla/4.0 (compatible; msie 6.0; windows nt 5.0; q312461; netcaptor 6.5.0)” mod_gzip: 80pct.
61.169.41.13 – – [02/mar/2002:01:26:22 -0500] “get /new/publish/global_css http/1.1” 200 629 “http://www.freelamp.com/new/publish/index_html” “mozilla/4.0 (compatible; msie 6.0; windows nt 5.0; q312461; netcaptor 6.5.0)” mod_gzip: 73pct.
61.169.41.13 – – [02/mar/2002:01:26:24 -0500] “get /new/publish/topicimages/tutorial http/1.1” 304 0 “http://www.freelamp.com/new/publish/index_html” “mozilla/4.0 (compatible; msie 6.0; windows nt 5.0; q312461; netcaptor 6.5.0)” mod_gzip: 0pct.
61.169.41.13 – – [02/mar/2002:01:26:24 -0500] “get /new/publish/linkimages/jsp001_img http/1.1” 304 0 “http://www.freelamp.com/new/publish/index_html” “mozilla/4.0 (compatible; msie 6.0; windows nt 5.0; q312461; netcaptor 6.5.0)” mod_gzip: 0pct.
我们看到 mod_gzip 已经对 .html 和那些没有点的文件作了压缩,压缩率达到了 70-80%。但是,mod_gzip 对图片文件不作压缩。
四、总结
结合,mod_gzip 和缓冲工具等,我们完全可以使一台配置较低的 pc 有足够的能力处理各种 html/cgi 等的请求。
(作者:徐永久)