Total Pageviews

Thursday 25 October 2012

Apache 使用deflate模块压缩输出

启用web服务器的压缩功能主要有两个好处:
1. 提高用户打开页面的速度。
2. 节省服务器的带宽资源。
一定会有人认为启用压缩会消耗服务器的CPU及内存资源。就目前的计算机处理能力来讲,这点消耗并不是影响系统负载的“主要矛盾”。相反地,因为启缩,会提高传输效率,从而提高计算机处理请求的速度,从而降低系统负载。
Apache 自带的 mod_deflate 模块,提供了DEFLATE输出过滤器,允许服务器在将输出内容发送到客户端以前进行压缩,以节约带宽。
通常,我们只压缩文本内容,图片文件因为本身已经是压缩格式的,再次压缩的意义不大。
我常用的压缩配置如下:
<Location />
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/x-javascript
</IfModule>
</Location>
需要注意的是:压缩会于代理服务器造成一定的困扰。比如当我使用Nginx的反向代理+缓存(storage)的时候,存储在Nginx本地的文件 是压缩过的(比如 a.css 本来应该是文本文件,存在Nginx本地的是被压缩生成的二进制文件),当用户再次请求时,Ngnix反回给用户的是压缩内容,于是用户这边显示乱码.