apache2.4 启用压缩模块mod_deflate

网站随着用户访问量的增加和内容量的增加,网站的带宽会不断的增加,随之就是网站成本的增加。并且当内容量增大的时候,客户端如果带宽小,就会影响用户的体验。因此从这两方面考虑,网站的某些内容必须经过压缩之后再传给用户,然后在用户客户端进行解压,来实现双方共赢的效果。

apache的压缩要用到mod_deflate模块,该模块提供了DEFLATE输出过滤器,允许服务器在将输出内容发送到客户端以前进行压缩,以节约带宽。它的核心思想就是把文件先在服务器进行压缩,然后再进行传输,这样可以显著减少文件传输的大小。当传输完毕后,客户端游览器会重新对压缩过的内容进行解压缩。如果没特殊情况的话,所以的文本内容都应该能被gzip压缩,例如:html(php),js,css,xml,txt等。特殊情况就是像一些首页上有很多广告投放的js代码,由于需要每次加载进而进行来访信息统计,所以这些广告代码拥有者网站的js不会经过gzip压缩,

mod_deflate模块,在我们前篇部署的时候已经编译安装进去了。

那么如果没有安装,如何安装呢?并且如果不知道到是否安装了,如何查看呢?

1、mod_deflate模块检查及安装

由于apache2.2.x和2.4.x这两个版本在检查mod_deflate模块是否安装方法方法是不同的。最后,我无奈做了很多测试,下面建议大家这样来检查。

 

1.[root@c64-web /]# /usr/local/apache/bin/apachectl -M | grep deflate
2.deflate_module (static)  #此种结果为编译安装时装的
3.[root@c64-web /]# /usr/local/apache/bin/apachectl -M | grep deflate
4.deflate_module (shared)  #此种结果为DSO方式安装的

安装了的话,就可以直接进行压缩配置了,如果没有安装,下面为安装方法

a)编译时安装方法

编译的时候跟上–enable-deflate即可实现安装

b)DSO方式安装

[root@bruce filters]# /usr/local/httpd2.4.18/bin/apxs -c -i -a mod_deflate.c

如果错误:    mod_deflate.c:51:18: error: zlib.h: No such file or directory

[root@bruce filters]# yum install zlib-devel

重新执行:[root@bruce filters]# /usr/local/httpd2.4.18/bin/apxs -c -i -a mod_deflate.c

[root@c64-web filters]# ll /usr/local/apache/modules/mod_deflate.so   #检查mod_deflate是否安装,成功安装这里会显示出该文件

-rwxr-xr-x 1 root root 76697 11月  5 07:50 /usr/local/apache/modules/mod_deflate.so

扩展:使用DSO方式安装,apxs后跟的参数详解

1.-c  此选项表明需要执行编译操作。它首先会编译c源程序(.c)files为对应的目标代码文件(.c),然后连接这些目标代码和files中其余的目标代码文件(.c和.a),以生成动态共享对象dsofile。如果没有指定-s选项,则此输出文件名由files中的第一个文件名推测得出,也就是默认mod_name.so。
2.-i  此选项表示需要执行安装操作,以安装一个或多个动态共享对象到服务器的modules目录。
3.-a  此选项自动增加一个LoadModule行到httpd.conf文件中,以激活此模块,或者,如果此行已经存在,则启用之。
4.压缩模块配置

2、配置压缩参数

apache2.4开启gzip压缩

34

LoadModule filter_module modules/mod_filter.so
LoadModule deflate_module modules/mod_deflate.so
<ifmodule mod_deflate.c>
     DeflateCompressionLevel 9
     AddOutputFilterByType   DEFLATE text/html text/plain text/xml application/x-httpd-php
     AddOutputFilter         DEFLATE  html  htm  xml  php  css  js
</ifmodule>

发表评论

电子邮件地址不会被公开。 必填项已用*标注