为什么要开启 gzip ?
站群服务器开启 gzip 压缩会大大的提高网站访问速度,带来良好的使用者体验,而且降低网站流量,这些好处是显而易见的。下图是本站首页开启 gzip 后的情况:WordPress 网页大小由 81.7k 压缩到 13.9k,receiving 接收资料只要 21 毫秒就完成了。
 
当然 gzip 并不是百利而无一害。首先站群服务器压缩 WordPress 网页资料会占用一定的站群服务器资源,另外如果 gzip 压缩得太厉害(压缩等级太高)可能会让旧版的 IE 系列无法正常开启 WordPress 网页。不过现在站群服务器一般效能都不会有太大问题,所以开启 gzip 利大于弊。
 
怎样知道站群服务器是否启用了 gzip 压缩呢?很简单,开启 firebug,看 network 选项卡,看是否有 Content-Encoding : gzip 项,有则表示已开启。 chrome 自带的除错工具(F12)也能看到。最简单地是去 chinaz(http://tool.chinaz.com/Gzips/)去看网站资料。
怎样开启 gzip 压缩?
 
 
以 CentOS 为例,开启 Apache 的 httpd.conf 档案:
# vim /etc/httpd/conf/httpd.conf
 
搜寻是否有这两行:
LoadModule deflate_module modules/mod_deflate.so
LoadModule headers_module modules/mod_headers.so
 
没有请加上,并确保 /etc/httpd/modules 目录存在 mod_deflate.so 档案。 mod_deflate 是压缩模组,就是对要传输到客户端的程式码进行 gzip 压缩;mod_headers 模组的作用是告诉浏览器页面使用了 gzip 压缩,如果不开启 mod_headers 那么浏览器就会对 gzip 压缩过的页面进行下载,而无法正常显示。
 
如果没问题,在 httpd.conf 最后加上:

AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/atom_xml
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/x-httpd-php
AddOutputFilterByType DEFLATE text/html

 
储存并关闭档案。重启 Apache 即可:service httpd restart 。
其它写法

#必须的,就像一个开关一样,告诉 apache 对传输到浏览器的内容进行压缩
 
SetOutputFilter DEFLATE
#设定不对字尾 gif,jpg,jpeg,png 的图片档案进行压缩
 
SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-gzip dont-vary
 
#同上,就是设定不对 exe,tgz,gz 。。。的档案进行压缩
 
SetEnvIfNoCase Request_URI .(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI .(?:pdf|mov|avi|mp3|mp4|rm)$ no-gzip dont-vary
 
#设定对档案是文字的内容进行压缩,例如 text/html  text/css  text/plain 等
 
AddOutputFilterByType DEFLATE text/*
 
#这段程式码你只需要了解 application/javascript application/x-javascript 这段就可以了,这段的意思是对 javascript 档案进行压缩
 
AddOutputFilterByType DEFLATE application/ms* application/vnd* application/postscript application/javascript application/x-javascript
 
#这段是告诉 apache 对 php 型别的档案进行压缩
AddOutputFilterByType DEFLATE application/x-httpd-php application/x-httpd-fastphp
 
# Netscape 4.x 有一些问题,所以只压缩档案型别是 text/html 的
 
BrowserMatch ^Mozilla/4 gzip-only-text/html
 
# Netscape 4.06-4.08 有更多的问题,所以不开启压缩
 
BrowserMatch ^Mozilla/4.0[678] no-gzip
 
# IE 浏览器会伪装成 Netscape ,但是事实上它没有问题
 
BrowserMatch bMSIE !no-gzip !gzip-only-text/html

 
配置到这里 apache 中的 gzip 压缩就配置完成,重启 apache 后,新的配置就会生效。不过开启 gzip 功能需要额外 CPU 资源开销。
 
另外题外话:图片没必要开启 gzip 压缩!
 
使用经由压缩过的图片作为 WordPress 网页背景,cpu 飙高,页面假死严重(ie6)
所有的 gif 或 png 等图片这些格式都是经过压缩过后的,对于这些档案进行压缩只是增加站群服务器负担而已。
 
对于图片优化的话可以使用 ImageOptimizer 来进行压缩,前提你的站群服务器足够强大那你可以忽略了。