menu

秋梦无痕

一场秋雨无梦痕,春夜清风冻煞人。冬来冷水寒似铁,夏至京北蟑满城。

Avatar

使用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 秒定律?

评论已关闭