Apache 开启Gzip压缩功能

作者: jaclon 分类: PHP 发布时间: 2011-06-21 15:04 ė 67条评论

Apache 的mod_defalte模块提供了DEFLATE输出过滤器,允许服务器在将输出内容发送到客户端以前进行压缩,以节约带宽。

安装加载

先查看Apache 是否加载了mod_deflate模块;如果没有加载,找到httpd.conf 配置文件,将LoadModule deflate_module modules/mod_deflate.so前面的#号去掉。

启动并设置

在httpd.conf中添加如下设置:

 <IfModule mod_deflate.c>
	 <Location />
		# Insert filter
		SetOutputFilter DEFLATE
		
		# Netscape 4.x has same problems...
		BrowserMatch ^Mozilla/4 gzip-only-text/html

		# Netscape 4.06-4.08 have some more problems
		BrowserMatch ^Mozilla/4\.0[678] no-gzip

		# MSIE masquerades as Netscape, but it is fine
		# BrowserMatch \bMSIE !no-gzip !gzip-only-text/html

		# NOTE: Due to a bug in mod_setenvif up to Apache 2.0.48
		# the above regex won't work. You can use the following
		# workaround to get the desired effect:
		BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html

		# Don't compress images and other
		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
		SetEnvIfNoCase Request_URI .(?:pdf|doc)$ no-gzip dont-vary
		AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css
		AddOutputFilterByType DEFLATE application/x-javascript

		# Make sure proxies don't deliver the wrong content
		#Header append Vary User-Agent env=!dont-vary
	 </Location>
 </IfModule>

如果你是虚拟主机且开启AllowOverride,那么也可以在网站根目录下新建.htaccess文件,并加入以上配置信息

重启Apache

重启Apache使设置生效;如果是.htaccess则不用重启,应该立即生效。

配置说明

压缩是由DEFLATE过滤器实现的,下面的指令会对其所在容器的文档启用压缩:

SetOutputFilter DEFLATE

BrowserMatch指令针对特定的浏览器设置no-gzip标记以取消压缩,例如:

BrowserMatch ^Mozilla/4 gzip-only-text/html  只对text/html文件进行压缩
BrowserMatch ^Mozilla/4\.0[678] no-gzip 取消压缩

SetEnvIfNoCase 指令针对特定的文件设置no-gzip标记以取消压缩,例如:

SetEnvIfNoCase Request_URI \
			\.(?:gif|jpe?g|png)$ no-gzip dont-vary  不压缩图片
不压缩exe,压缩包等文件
SetEnvIfNoCase Request_URI .(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary 
SetEnvIfNoCase Request_URI .(?:pdf|doc)$ no-gzip dont-vary 不压缩pdf,doc文件

AddOutputFilterByType指令将压缩限制在几种特定的MIME类型上,例如:

# 允许压缩html,text,xml,css
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css
# 允许压缩js
AddOutputFilterByType DEFLATE application/x-javascript

本文出自 肥蕉博客@IT技术,热门话题,生活随笔,美图欣赏,转载时请注明出处及相应链接。

本文永久链接: http://www.bananawolf.com/html/2011/06/676.html

7条评论

  1. 断竹挽风 六月 21, 2011 9:52 下午 回复

    我用的好像是win2008主机,不知道能不能设置这个……我现在用了wordpress的gzip插件。

    1. jaclon 六月 22, 2011 8:25 上午 回复

      应该可以,gzip插件是开启了html页面压缩,对css,js没有启用压缩,你可以用Firefox的Firebug插件看看

      1. 断竹挽风 六月 22, 2011 7:17 下午 回复

        用的是360浏览器,火狐的接触过一段时间,表示非傻瓜型,不适合我的智商……

  2. BUDF 七月 3, 2011 11:56 下午 回复

    不行,我试了一下

    1. jaclon 七月 4, 2011 8:22 上午 回复

      js,css有压缩么

  3. Royal 八月 21, 2011 5:13 下午 回复

    学习了, 我在虚拟主机里开了gzip, 把资源下载的.zip文件也压缩了, 而浏览器没有解压缩, 直接当成文件给保存了…
    前段时间网络有问题, 估计是被劫持了, 我那可以下载, 别人就是下不了..

  4. hostgator 八月 27, 2011 8:30 上午 回复

    学习过了。博主写的很好

发表评论

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

*

Ɣ回顶部