在Apache中启用压缩
更换了服务器,正好也折腾折腾网站,今天发现站点没有启用gzip压缩。
貌似在之前的服务器上也没打开。。。。。。
搜索一下,发现原来我out了…现在已经不再使用Gzip了,而是使用deflate了。
Apcache的gzip与deflate对比
1. 两者都是使用Gzip压缩算法
2. deflate压缩速度略快,gzip压缩比略高。默认情况下,gzip会比deflate多压4%-6%
3. gzip对服务器的CPU占用要高一些,deflate是专门为保护服务器性能的压缩模块,它仅需很小的资源来压缩文件
mod_deflate可以使用DeflateCompressionLevel指令来设置压缩级别,指令范围1-9(1:压缩速度最快,压缩后文件最大;9:压缩速度最慢,压缩后文件最小),默认设置为6。
(引用:http://iiphp.blog.sohu.com/163686014.html)
因为再Apache 1.X时代,Apache没有默认的压缩模块,所以使用mod_gzip来压缩。
而在Apache 2.X时代,Apache已经默认开启了mod_deflate作为压缩模块。
我们做的只是配置。
首先确定加载了mod_deflate与mod_headers
#vim /etc/httpd/conf/httpd.conf LoadModule deflate_module modules/mod_deflate.so LoadModule headers_module modules/mod_headers.so
然后找个合适的位置贴入下面的内容
(我放在了### Section 3: Virtual Hosts这句话之前,也就是### Section 2: ‘Main’ server configuration的最后)。
<IfModule mod_deflate.c> #开启压缩 SetOutputFilter DEFLATE #不对各种图片启用压缩 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 #不对pdf和各种多媒体文件启用压缩 SetEnvIfNoCase Request_URI .(?:pdf|mov|avi|mp3|mp4|rm)$ no-gzip dont-vary #对文本类内容启用压缩,例如text/html、text/css、text/plain等等 AddOutputFilterByType DEFLATE text/* #对Office文件以及各种脚本语言启用压缩 AddOutputFilterByType DEFLATE application/ms* application/vnd* application/postscript application/javascript application/x-javascript #对php类型的文件进行压缩 AddOutputFilterByType DEFLATE application/x-httpd-php application/x-httpd-fastphp </IfModule>
在Apache官方文档中还有
BrowserMatch ^Mozilla/4 gzip-only-text/html # Netscape 4.x 有一些问题,所以只压缩文件类型是text/html的 BrowserMatch ^Mozilla/4.0[678] no-gzip # Netscape 4.06-4.08 有更多的问题,所以不开启压缩 BrowserMatch \bMSIE !no-gzip !gzip-only-text/html # IE浏览器会伪装成 Netscape ,但是事实上它没有问题
这样的内容,是为了兼容老浏览器的。
个人认为没有什么必要。因为再当前计算机和互联网大环境下,个人认为没有什么必要去兼容了。
修改好之后,使用
# apachectl configtest
来测试一下配置文件是否有错,如果得到的结果是Syntax OK,证明配置无误。就可以重启Apache了。
# service httpd restart
更多有关mod_deflate的内容,
可以参见Apche官方文档(英文)《Apache Module mod_deflate》:http://httpd.apache.org/docs/2.2/mod/mod_deflate.html