先让大家看看实际效果,请看下图10点中的流量,开启deflate压缩后后,今天的10点,带宽是3MB,没有开启deflate压缩的昨天上午10点,带宽是4.3MB。很明显,节约了30%的流量开支。如果图片,zip等下载文件较少,纯html页面,php页面较多,可以节约50%以上的带宽。
压缩比率测试结果:
http://www.hbcms.org.cn/ is gzipped
Original Size: 30 KB
Gzipped Size: 8 KB
Data Savings: 73.33% 首页是html页面,节约了73%的带宽,速度提高了3倍多!
http://www.hbcms.org.cn/cms/1a/493.html is gzipped
Original Size: 37 KB
Gzipped Size: 10 KB
Data Savings: 72.97% 这也是html页面,节约了72%的带宽,速度提高了3倍多!
自己叫网友访问网站,发现速度的确是快了。效果不错。
开启了时事压缩传输,在服务器负载方面,CPU负载提高了0.3左右,可以接受。
如何安装apache的deflate压缩?
下面是 http://www.hbcms.com 收集整理的mod_deflate安装和配置经验和过程,适合apache2.x
Apache2 推荐使用 mod_deflate 压缩,mod_gzip适合apache1.x
关于mod_deflate的详细内容,可以参考http://httpd.apache.org/docs-2.0/mod/mod_deflate.html
1. 查找模块deflate
find /backup/soft/httpd-2.2.4 -name mod_deflate.c
cd /backup/soft/httpd-2.2.4/modules/filters
2. 安装mod_deflate
/usr/local/apache224/bin/apxs -i -c -a mod_deflate.c
apxs命令参数说明:
-i 此选项表示需要执行安装操作,以安装一个或多个动态共享对象到服务器的modules目录中。
-a 此选项自动增加一个LoadModule行到httpd.conf文件中,以激活此模块,或者,如果此行已经存在,则启用之。
-A 与 -a 选项类似,但是它增加的LoadModule命令有一个井号前缀(#),即此模块已经准备就绪但尚未启用。
-c 此选项表示需要执行编译操作。它首先会编译C源程序(.c)files为对应的目标代码文件(.o),然后连接这些目标代码和files中其余的目标代码文件(.o和.a),以生成动态共享对象dsofile 。如果没有指定 -o 选项,则此输出文件名由files中的第一个文件名推测得到,也就是默认为mod_name.so 。
如果是新安装apache,直接加上 --enable-headers --enable-deflate 即可
3. 配置mod_deflate
vi /usr/local/apache224/conf/httpd.conf
LoadModule deflate_module modules/mod_deflate.so
此LoadModule需要放在libphp5.so之后
<IfModule mod_deflate.c>
DeflateCompressionLevel 7
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/x-httpd-php
AddOutputFilter DEFLATE css js
</IfModule>
压缩等级的调整有两种说法,不过懒得研究了,默认等级是6,890k的文件压缩出来的数据和最高的9级只差1k,而且9级需要更多的CPU时间,用默认的6级就可以了。
另外,有个Real-Time Compression Check工具,可以检测某个URL是否是压缩传输的。好像这家公司做IIS下的zip压缩程序,所以弄了这么个在线工具。只要输入你的地址,回车,就可以看到服务器类型、是否是压缩传输以及压缩前和压缩后的大小比较。大多数情况下html代码都能压缩到1/4~1/3,gzip压缩传输还是很不错的。
压缩效果测试:http://www.port80software.com/products/httpzip/compresscheck
压缩效果测试:http://www.whatsmyip.org/mod_gzip_test/