apache2配置gzip压缩
本文介绍如何启用apache的gzip功能,啥叫gzip请查询相关wiki或者百度百科针对Apache2.0及之后的版本,Apache提供支持, 不过不叫gzip,而叫mod_deflate。
在使用gzip压缩之前请确实是否已经启用apache的deflate和 headers两个模块。操作办法:
修改
#LoadModule headers_module modules/mod_headers.so#LoadModule deflate_module modules/mod_deflate.so为
LoadModule headers_module modules/mod_headers.soLoadModule deflate_module modules/mod_deflate.so及去掉前面的#
在httpd.conf中添加下面一段配置:<IfModule mod_deflate.c>
<Location />
#Insert filter
SetOutputFilter DEFLATE
# Netscape 4.x has some problems…
BrowserMatch ^Mozilla/4 gzip-only-text/html
# Netscape 4.06-4.08 have some more problems
BrowserMatch ^Mozilla/4\.0 no-gzip
# MSIE masquerades as Netscape, but it is fine
# BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
# NOTE: Due to a bug in mod_setenvif up to Apache 2.0.59
# the above regex won’t work. You can use the following
# workaround to get the desired effect:
# BrowserMatch \bMSIE !no-gzip !gzip-only-text/html force-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
# Don’t compress images and other
#SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-gzip dont-vary
#SetEnvIfNoCase Request_URI .(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary
#SetEnvIfNoCase Request_URI .(?:pdf|doc)$ no-gzip dont-vary
AddOutputFilterByType DEFLATE text/html text/css image/gif image/jpeg image/pngapplication/x-javascript
# Make sure proxies don’t deliver the wrong content
Header append Vary User-Agent env=!dont-vary
#DeflateFilterNote ratio ratio_info
#LogFormat '"%v %h %l %u %t “%r" %>s %b "%{Referer}i" "%{User-Agent}i"" (%{ratio}n)' deflate
#CustomLog logs/deflate_log deflate
</Location>
</IfModule>这样整个配置就算完成,重启apache就可以看到效果,够简单吧!
关于apache 的mod_deflate的更多配置参数请参考apache的配置手册:
http://www.phpchina.com/resource/manual/apache/mod/mod_deflate.html
笔者以firebug为测试工具在启用gzip前后以jquery.-1.3.2-min.js为测试对象得到下面的测试结果:
启用前:
启用后:
很明显的看到,jquery-1.3.2.min.js已经从55.9k压缩为19.3k,这个压缩比例应该说是比较给力的。而且我们知道jq-min的代码本身已经做了压缩,所以如果是我们平时写的一些html代码的话,整个压缩程度更高,在笔者测试过程中,一般对html可以压缩为原大小的30%甚至更小。这里就不贴图了。
下面一段文字来至互联网:
gzip是一种数据格式,默认且目前仅使用deflate算法压缩data部分;
deflate是一种压缩算法,是huffman编码的一种加强。
deflate与gzip解压的代码几乎相同,可以合成一块代码。
区别仅有:
deflate使用inflateInit(),而gzip使用inflateInit2()进行初始化,比inflateInit()多一个参数: -MAX_WBITS,表示处理raw deflate数据。因为gzip数据中的zlib压缩数据块没有zlibheader的两个字节。使用inflateInit2时要求zlib库忽略zlibheader。在zlib手册中要求windowBits为8..15,但是实际上其它范围的数据有特殊作用,见zlib.h中的注释,如负数表示rawdeflate。
Apache的deflate变种可能也没有zlib header,需要添加假头后处理。即MS的错误deflate (rawdeflate).zlib头第1字节一般是0×78,第2字节与第一字节合起来的双字节应能被31整除,详见rfc1950。例如Firefox的zlib假头为0×7801,pythonzlib.compress()结果头部为0x789c。
deflate 是最基础的算法,gzip 在 deflate 的 raw data前增加了 10 个字节的 gzheader,尾部添加了 8 个字节的校验字节(可选 crc32 和 adler32)和长度标识字节。
from:http://go.cxweb.com.cn/0tlcv
页:
[1]