使用Apache的mod_gzip对WEB服务器进行HTTP压缩优化
from: http://www.chedong.com/tech/compress.html
关键词:mod_gzip http compress apache
内容摘要:
HTTP压缩对于纯文本内容可压缩至原大小的40%一下,从而提供60%以上的数据传输节约,虽然WEB服务器会因为压缩导致CPU占用的略微上升,但是 可以节约大量用于传输的网络IO。对于数据压缩带来的用户浏览速度提升(让页面符合8秒定律),这点总体负载5%-10%上升是非常值得的。毕竟通过数据 压缩会比通过不规范的HTML代码优化要方便得多。
mod_gzip的安装:
修改Makefile中的 apxs路径:然后make make install
配置:mod_gzip+mod_php
LoadModule gzip_module modules/mod_gzip.so
...
AddModule mod_gzip.c
...
<IfModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_minimum_file_size 1000
mod_gzip_maximum_file_size 300000
mod_gzip_item_include file \.htm$
mod_gzip_item_include file \.html$
mod_gzip_item_include file \.php$
mod_gzip_item_include file \.php3$
mod_gzip_item_include mime text/.*
mod_gzip_item_include mime httpd/unix-directory
# mod_gzip的临时工作目录: mkdir /tmp/mod_gzip; chmod -R 777 mod_gzip
mod_gzip_temp_dir /tmp/mod_gzip
mod_gzip_dechunk Yes
mod_gzip_keep_workfiles No
</IfModule>
mod_gzip和mod_php的配合:不要让mod_gzip和mod_php使用同一个临时目录,php_session存放目录可以通过 php.ini设置到session.save_path = /tmp/php_sess
mod_gzip和Resin配合:
从resin的邮件列表上查到的:要让mod_gzip在mod_caucho后加载,否则mod_gzip不起作用
...othr modules
AddModule mod_so.c
AddModule mod_caucho.c
#notice: mod_gzip must load after mod_caucho
AddModule mod_gzip.c
AddModule mod_expires.c
...
配置:mod_gzip + resin
<IFModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_dechunk yes
mod_gzip_keep_workfiles No
mod_gzip_minimum_file_size 3000
mod_gzip_maximum_file_size 300000
mod_gzip_item_include file \.html$
mod_gzip_item_include mime text/.*
mod_gzip_item_include mime httpd/unix-directory
mod_gzip_item_include handler caucho-request
</IFModule>
配置:mod_gzip + mod_proxy 反相代理加速并压缩 IIS
注意要增加缺省的文件编码属性映射。
AddType text/html .asp
AddType text/html .aspx
<IFModule mod_gzip.c>
AddType text/html .asp
AddType text/html .aspx
mod_gzip_on Yes
mod_gzip_dechunk yes
mod_gzip_keep_workfiles No
mod_gzip_minimum_file_size 3000
mod_gzip_maximum_file_size 300000
mod_gzip_item_include file \.html$
mod_gzip_item_include file \.asp$
mod_gzip_item_include file \.aspx$
mod_gzip_item_include mime text/.*
mod_gzip_item_include mime httpd/unix-directory
mod_gzip_item_include handler proxy-server
</IFModule>
参考资料:
mod_gzip的下载
http://sourceforge.net/projects/mod-gzip/
mod_gzip项目首页
http://www.schroepl.net/projekte/mod_gzip/
Apache2 中的mod_deflate:压缩率比mod_gzip略低
http://httpd.apache.org/docs-2.0/mod/mod_deflate.html
模块化安装Apache
http://www.chedong.com/tech/apache_install.html
IIS 下似乎没有类似的工具吧?
gzip压缩已经被集成在IIS6.0中了。在IIS6.0管理对话框中无法设置启用gzip压缩,只能靠修改IIS6.0的xml配置文件(%SYSTEMROOT%\System32\inetsrv\MetaBase.xml)。
IIsCompressionScheme是两个xml节点,分别是deflate和gzip压缩。这两个节点都有HcFileExtensions和HcScriptFileExtensions属性,他们的值都是用空格分开。可以把aspx加到HcScriptFileExtensions属性中,把htm和html加到HcFileExtensions中,这样就只压缩aspx文件和html文件。当然你也可以都留空,那么IIS将压缩所有的类型,但是图片、视频以及压缩包类的压缩是不值得的,所以不推荐这样做。
IIS还提供了一个ISAPI,在%SYSTEMROOT%\System32\inetsrv\gzip.dll,可以把他加到服务扩展里面并启用,也可以做到压缩的。
文档上说IIS会自动智能分析客户端,启动压缩之后,象IE6和FireFox这样支持gzip压缩的会自动压缩。
不错,IIS那一段好。
8 秒定律?