文本页面(htm/css/js)启用gzip压缩后,一般可以压缩70%左右。即50K的文件,实际只需传输15K到客户端,由客户端解压显示,这样可有效提高前端性能。另外,实践证明,启用Gzip压缩后,不会对搜索引擎收录有影响。要开启gzip压缩,在 apache2.x 版本以上,需开启 Deflate 模块和 headers 模块。事实上,Apache2.x系列已经内置了这两个模块,因此,只需要安装时打开即可:
--enable-deflate
--enable-headers
很显然,我这里问题是安装时又未打开,so..我们选择单独编译模块,mod_deflate.c 在源文件目录的modules/filters下,mod_hearders.c 则在 modules/metadata目录下。
1. 安装 mod_hearders
# cd /home/changyou/httpd.2.2.14/modules/metadata/
# /usr/local/web/apache/bin/apxs -i -c -a mod_deflate.c
apxs命令参数说明:
-i
-a
-A
-c
-o
结果报错:
chmod 755 /usr/local/web/apache/modules/mod_deflate.so
chmod: cannot access `mod_deflate.so’: No such file or directory
意思是没有.so文件,所以需要gcc一下
# gcc -shared -o mod_headers.so mod_headers.o
# cp mod_headers.so /usr/local/web/apache/modules/
# /usr/local/web/apache/bin/apxs -i -a -c mod_headers.c
2. 安装 mod_deflate
# /usr/local/web/apache/bin/apxs -i -c -a mod_deflate.c
同样也报上面“No such file or directory”错误
# gcc -shared -o mod_deflate.so mod_deflate.o
# cp mod_deflate.so /usr/local/web/apache/modules/
# /usr/local/web/apache/bin/apxs -i -a -c mod_deflate.c
3. 配置 mod_deflate
在 httpd.conf 中添加so,而我这里因为在 apxs 时用了 -a 参数,所以so文件已被自动关联
LoadModule deflate_module modules/mod_deflate.so
LoadModule headers_module modules/mod_headers.so
其实安装deflate时mod_headers并不是必须的,哪为什么我们安装呢?主要是使用了header模块来确保不会发送错误的内容。最后在你的配置文件里加入以下代码,好开启gzip:
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/x-httpd-php
AddOutputFilter DEFLATE css js
或者:
<IfModule mod_deflate.c>
DeflateCompressionLevel 7
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/x-httpd-php
AddOutputFilter DEFLATE css js
</IfModule>