一、确定你的web服务器是哪种?Apache?Tomcat?确定你的系统?Windows?Unix/Linux?

1、纯Tomcat服务器

        如果您的WEB 服务器是跑在Tomcat 服务器下的,而且直接使用Tomcat 提供的HTTP 服务,那建议你马上动手,因为实在是太简单了,你只需要在server.xml 配置文件中给HTTP Connector 增加一个 compression 的参数值为on 并重启Tomcat 服务器就立刻生效,配置如下(添加下面的代码):

<Connector port=”8080″ protocol=”HTTP/1.1″              
 maxThreads=”150″ connectionTimeout=”20000″              
  redirectPort=”8443″ compression=”on”/>  

Tomcat 采用的是 HTTP/1.1 的 GZIP 压缩协议,它会根据浏览器送过来的请求中的 accept-encoding 值是否包含 gzip 来判断浏览器是否支持 gzip 压缩协议,如果浏览器支持就启用 gzip 压缩,否则就不进行任何压缩处理。Tomcat 中还有另外一个参数 compressableMimeType,这个参数可以用来指定压缩哪种类型的内容,例如可以指定该配置值为:text/html,text/plain ,则只压缩 contentType 为text/html 和 text/plain 的页面,不过您最好也将 css 和 javascript 文件也算在压缩的文件类型中,因为这两者的压缩效果也十分的明显。

2、Apache服务器

在 apache 1.3 版本,常用 mod_gzip 对输出内容压缩,现在主流的浏览器都支持gzip 解压缩。到了 apache2 ,这个模块更名为 mod_deflate,对应的模块文件名是 mod_deflate.so。mod_gzip 本文不做介绍,下面描述一下在 Apache 2 下如何启用并配置 mod_deflate 模块。默认安装的 Apache 不管是 Windows 还是 Linux/Unix,都是不启用该模块的, Linux/Unix 下甚至不带该模块,你需要手工编译这个模块。

下面我们分别介绍在 Windows Linux 操作系统下如何启用并配置 mod_deflate 模块。

在 Windows 下采用安装程序安装的 Apache 服务器已经带有 deflate 所需要的模块 mod_deflate.so 和 mod_headers.so,我们只需要在 httpd.conf 配置文件中启用并进行相关的配置即可,(添加下面的代码):

LoadModule deflate_module modules/mod_deflate.so
LoadModule headers_module modules/mod_headers.so # Insert filter

SetOutputFilter DEFLATE

# Netscape 4.x has some 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
SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-gzip dont-vary

# Make sure proxies don’t deliver the wrong content
Header append Vary User-Agent env=!dont-vary

在 Unix/Linux 下,且所需要的两个模块 mod_deflatemod_headers 已经编译安装了,就可以找到 Apache 的 httpd.conf 文件,配置如下(添加下面的代码):

<IfModule mod_deflate.c>

SetOutputFilter DEFLATE

DeflateCompressionLevel 9
AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml text/javascript application/x-httpd-php

#BrowserMatch ^Mozilla/4 gzip-only-text/html
#BrowserMatch ^Mozilla/4\.0[678] no-gzip
#BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
#Explicit exclusion of files.

SetEnvIfNoCase Request_URI \.(?:gif|jpg|cab|jpe?g|exe|bmp|mp3|rar|zip|swf|png)$no-gzip dont-vary

#Cache server support.
#Header append Vary User-Agent env=!dont-vary logs.

DeflateFilterNote Input instream
DeflateFilterNote Output outstream
DeflateFilterNote Ratio ratio
LogFormat ‘ “%r” %{outstream}n/%{instream}n (%{ratio}n%%)’ deflate
CustomLog logs/deflate_log deflate

</IfModule>
<IfModule mod_deflate.c>

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

    DeflateCompressionLevel 9
    SetOutputFilter DEFLATE

    #DeflateFilterNote Input instream   
    #DeflateFilterNote Output outstream   
    #DeflateFilterNote Ratio ratio   
    #LogFormat ‘”%r” %{outstream}n/%{instream}n (%{ratio}n%%)’ deflate   
    #CustomLog logs/deflate_log.log deflate   
</IfModule>

mod_expires模块添加是启用对有效期控制,也可以加里面,有效控制带宽成本

gzip功能能在消耗一点点CPU使用率的情况下,大幅减少网页在传输过程中的带宽(大约60%-75%)。

mod_expires,就是通过延长页面组件的有效期来加速网页的加载。

关于此两者的具体配置如下:

mod_expires

首先在httpd.conf中开启这个模块 (寻找如下代码,如果找不到,就添加
LoadModule expires_module modules/mod_expires.so

然后添加配置项目
<IfModule mod_expires.c>
# 启用有效期控制
ExpiresActive On
# GIF有效期为1个月(秒数)
ExpiresByType image/gif A2592000
ExpiresByType image/jpeg A2592000
ExpiresByType image/png A2592000
ExpiresByType image/x-icon A2592000
ExpiresByType application/x-javascript A604800
ExpiresByType text/plain A604800
# HTML文档的有效期是最后修改时刻后的一星期
ExpiresByType text/html M604800
</IfModule>

“M”表示源文件的最后修改时刻,”A”表示客户端对源文件的访问时刻。后面的时间则以秒计算。

日志输出格式如下
[root@taobao.lt taopu8]# tail -f access_log
“GET home/www.haopu8.com/apache_pb.gif HTTP/1.1″ -/- (-%)
“GET home/www.haopu8.com/manual/ HTTP/1.1″ 2163/7434 (29%)
“GET home/www.haopu8.com/manual/style/css/manual.css HTTP/1.1″ 3973/18335 (21%)
“GET home/www.haopu8.com/manual/style/css/manual-loose-100pc.css HTTP/1.1″ 1006/2882 (34%)
“GET home/www.haopu8.com/manual/style/css/manual-print.css HTTP/1.1″ 2994/13017 (23%)

gzip(mod_deflate)

–> 正确区分mod_deflate和mod_gzip
所谓gzip,其实在早期的apache 1.x系列版本中没有内建网页压缩技术,所以才需要去gzip压缩,apache2官方在开发的时候,就已经把网页压缩考虑进去,内建了mod_deflate模块,所以apache2就不需要使用到mod_gzip了,这两者的工作原理是类似的,还有启用mod_deflate这个网页压缩的模块,功能和效率和mod_gzip是差不多的,甚至还好一些,就不需要再用mod_gzip模块了。

首先在httpd.conf中开启这个模块
LoadModule deflate_module modules/mod_deflate.so

然后添加配置如下(添加下面的代码):
<IfModule mod_deflate.c>
# 压缩级别
DeflateCompressionLevel 9
# 压缩类型
SetOutputFilter DEFLATE
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/x-javascript application/x-httpd-php
AddOutputFilter DEFLATE js css
# 启用日志记录
#DeflateFilterNote Input instream
#DeflateFilterNote Output outstream
#DeflateFilterNote Ratio ratio
#LogFormat ‘”%r” %{outstream}n/%{instream}n (%{ratio}n%%)’ deflate
#CustomLog logs/deflate_log.log deflate
</IfModule>

这样可以压缩一般网页中会用到的html、xml、php、css、js等格式档案输出,虽然会占用掉服务器处理器的一点点处理器时间,浏览者在接收 网页数据时也会消耗极短暂的一点点处理器时间,不过却可以大幅减少数据传输量,减少网络带宽被吃掉的情形。
DeflateCompressionLevel 9是指压缩程度的等级,从1到9,9是最高等级。据了解,这样做最高可以减少8成大小的传输量(看档案内容而定),最少也能够节省一半。
DeflateCompressionLevel 预设可以采用 6 这个数值,以维持耗用处理器效能与网页压缩质量的平衡。

补充
至于已经是压缩过的图片格式如jpg,音乐档案如mp3、压缩文件如zip之类的,就没必要再压缩了,因为这种档案你一开放服务器传输时压缩,处理器时间会跑不完,而且就算你跑完,大小也一样,如果使用PHP函数之类压缩过的文件,httpd服务是不会再次压缩的,系统级别的处理,总会比应用级别的效率高吧。

Apache 的 mod_deflate 和 gzip compression 的对比.

* 不使用任何压缩: 430KB
* 仅使用 gzip: 323KB
* 仅使用 Apache 的 deflate 模块: 247KB
* 同时使用 deflate 以及 gzip: 247KB

至於时间的部份, 差异倒不是很大, 大约都是在 10-20 秒左右。

而如果是 Linux/Unix 操作系统,如果你没有在编译安装两个模块 mod_deflate 和 mod_headers 的话,那就稍微有点麻烦,首先我们先看如何在编译安装 Apache 过程中也同时编译这两个模块,请在执行 configure 程序时增加两个参数分别是:

# ./configure –enable-deflate –enable-headers      
               
这样在编译完 Apache 后就可以直接在 httpd.conf 中启用并配置 deflate 模块了,配置的方法跟 Windows 平台下是相同的。

如果说您的 Apache 已经在运行了,不想再重新编译一次,那也可以选择只编译 deflate 模块所需的文件 mod_deflate.c 和 mod_headers.c。

这两个文件位于 {apache-src}/modules/filters/ 目录下(其中 {apache-src} 为 apache 源文件所在的目录)。使用如下命令来单独编译这两个源文件。

 # {apache-bin}/apxs -i -a -c {apache-src}/modules/filters/mod_deflate.c
# {apache-bin}/apxs –i –a –c {apache-src}/modules/filters/mod_headers.c
When install the header module the src directory is {apache-src}/modules/metadata/mod_headers.c
So we need change the command as follows:{apache-bin}/apxs -i -a -c {apache-src}/modules/metadata/mod_headers.c                      

 其中 {apache-bin} 为 Apache 安装目录下的 bin 目录,接下来在 httpd.conf 直接配置该模块即可。

很多时候你在单独编译 deflate 模块的时候可能会碰到编译错误,提示是:

Cannot load /opt/apache/modules/mod_deflate.so into server: /opt/apache/modules/mod_deflate.so: undefined symbol: deflate 编辑 /usr/local/apache2/bin/apr-config

文件修改其中的 LDFLAGS 值为 “-lz”,然后再重新编译 mod_deflate 模块,apxs -ica mod_deflate.c 即可。
为了省却不必要的麻烦,请尽量在编译安装时直接加上 –enable-deflate –enable-headers 参数。

二、做好如上,Gzip就可以正常工作了。我马上就给 淘宝网上商城 开启了Gzip了哦~~^_^

淘宝网上商城开启Gzip了

这么样?压缩率达到74.98%哦,高效吧。你是否很想也让你的爱站也和 淘宝网上商城 一样飞起来呢?

扩展阅读:

1、运用mod_deflate提升网络页面浏览地速度zz

2、apache之gzip模块或deflate模块的配置信息

3、Apache启用deflate压缩

4、利用压缩网页来提升网站浏览速度

原文:用mod_deflate来开启Gzip压缩网页提高网站速度



只有注册用户登录后才能发表评论。
网站导航:

posts - 55, comments - 2, trackbacks - 0, articles - 10

Copyright © UPEY!