启用Tomcat6的隐藏Gzip压缩功能

其實是 tomcat 6 把注释整個拿掉,让大家以为TomcatGzip不再支持,其实不然,大家可以看一下http://tomcat.apache.org/tomcat-6.0-doc/config/http.html就知道,Tomcat依然支持这个功能。<o:p></o:p>

<o:p> </o:p>

背景:
HTTP 压缩可以大大提高浏览网站的速度,它的原理是,在客户端请求网页后,从服务器端将网页文件压缩,再下载到客户端,由客户端的浏览器负责解压缩并浏览。相对于普通的浏览过程HTML ,CSS,Javascript , Text ,它可以节省40%左右的流量。更为重要的是,它可以对动态生成的,包括CGIPHP , JSP , ASP , Servlet,SHTML等输出的网页也能进行压缩,压缩效率惊人
一,对于Tomcat5.0以后的版本是支持对输出内容进行压缩的. 使用的是gzip压缩格式
下面是tomcat<st1:chsdate isrocdate="False" month="12" day="30" islunardate="False" w:st="on" year="1899">5.5.20</st1:chsdate> 中的$tomcat_home$/conf/server.xml的原内容<o:p></o:p>

 1 <v:shapetype o:spt="75" coordsize="21600,21600" filled="f" stroked="f" id="_x0000_t75" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:extrusionok="f" o:connecttype="rect" gradientshapeok="t"></v:path><o:lock v:ext="edit" aspectratio="t"></o:lock></v:shapetype><v:shape id="_x0000_i1025" type="#_x0000_t75" alt="" style="WIDTH: 8.25pt; HEIGHT: 12pt"><v:imagedata o:href="http://www.blogjava.net/Images/OutliningIndicators/None.gif" src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image001.gif"></v:imagedata></v:shape>     < Connector  port ="80"  maxHttpHeaderSize ="8192"
 2 <v:shape id="_x0000_i1026" type="#_x0000_t75" alt="" style="WIDTH: 8.25pt; HEIGHT: 12pt"><v:imagedata o:href="http://www.blogjava.net/Images/OutliningIndicators/None.gif" src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image001.gif"></v:imagedata></v:shape>               maxThreads ="150"  minSpareThreads ="25"  maxSpareThreads ="75"
 3 <v:shape id="_x0000_i1027" type="#_x0000_t75" alt="" style="WIDTH: 8.25pt; HEIGHT: 12pt"><v:imagedata o:href="http://www.blogjava.net/Images/OutliningIndicators/None.gif" src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image001.gif"></v:imagedata></v:shape>               enableLookups ="false"  redirectPort ="8443"  acceptCount ="100"
 4 <v:shape id="_x0000_i1028" type="#_x0000_t75" alt="" style="WIDTH: 8.25pt; HEIGHT: 12pt"><v:imagedata o:href="http://www.blogjava.net/Images/OutliningIndicators/None.gif" src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image001.gif"></v:imagedata></v:shape>               connectionTimeout ="20000"  disableUploadTimeout ="true"  URIEncoding ="utf-8"   />
 5 <v:shape id="_x0000_i1029" type="#_x0000_t75" alt="" style="WIDTH: 8.25pt; HEIGHT: 12pt"><v:imagedata o:href="http://www.blogjava.net/Images/OutliningIndicators/None.gif" src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image001.gif"></v:imagedata></v:shape>     <!--  Note : To disable connection timeouts, set connectionTimeout value
 6 <v:shape id="_x0000_i1030" type="#_x0000_t75" alt="" style="WIDTH: 8.25pt; HEIGHT: 12pt"><v:imagedata o:href="http://www.blogjava.net/Images/OutliningIndicators/None.gif" src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image001.gif"></v:imagedata></v:shape>     to 0  -->
 7 <v:shape id="_x0000_i1031" type="#_x0000_t75" alt="" style="WIDTH: 8.25pt; HEIGHT: 12pt"><v:imagedata o:href="http://www.blogjava.net/Images/OutliningIndicators/None.gif" src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image001.gif"></v:imagedata></v:shape>    
 8 <v:shape id="_x0000_i1032" type="#_x0000_t75" alt="" style="WIDTH: 8.25pt; HEIGHT: 12pt"><v:imagedata o:href="http://www.blogjava.net/Images/OutliningIndicators/None.gif" src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image001.gif"></v:imagedata></v:shape>     <!--  Note : To use gzip compression you could set the following properties :
 9 <v:shape id="_x0000_i1033" type="#_x0000_t75" alt="" style="WIDTH: 8.25pt; HEIGHT: 12pt"><v:imagedata o:href="http://www.blogjava.net/Images/OutliningIndicators/None.gif" src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image001.gif"></v:imagedata></v:shape>    
10 <v:shape id="_x0000_i1034" type="#_x0000_t75" alt="" style="WIDTH: 8.25pt; HEIGHT: 12pt"><v:imagedata o:href="http://www.blogjava.net/Images/OutliningIndicators/None.gif" src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image001.gif"></v:imagedata></v:shape>               compression="on" 
11 <v:shape id="_x0000_i1035" type="#_x0000_t75" alt="" style="WIDTH: 8.25pt; HEIGHT: 12pt"><v:imagedata o:href="http://www.blogjava.net/Images/OutliningIndicators/None.gif" src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image001.gif"></v:imagedata></v:shape>               compressionMinSize="2048" 
12 <v:shape id="_x0000_i1036" type="#_x0000_t75" alt="" style="WIDTH: 8.25pt; HEIGHT: 12pt"><v:imagedata o:href="http://www.blogjava.net/Images/OutliningIndicators/None.gif" src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image001.gif"></v:imagedata></v:shape>               noCompressionUserAgents="gozilla, traviata" 
13 <v:shape id="_x0000_i1037" type="#_x0000_t75" alt="" style="WIDTH: 8.25pt; HEIGHT: 12pt"><v:imagedata o:href="http://www.blogjava.net/Images/OutliningIndicators/None.gif" src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image001.gif"></v:imagedata></v:shape>               compressableMimeType="text/html,text/xml"
14 <v:shape id="_x0000_i1038" type="#_x0000_t75" alt="" style="WIDTH: 8.25pt; HEIGHT: 12pt"><v:imagedata o:href="http://www.blogjava.net/Images/OutliningIndicators/None.gif" src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image001.gif"></v:imagedata></v:shape>     --> <o:p></o:p>

从上面的8内容可以看出,要使用gzip压缩功能,你可以在Connector实例中加上如下属性即可
1) compression="on"
打开压缩功能
2) compressionMinSize="2048"
启用压缩的输出内容大小,这里面默认为2KB
3) noCompressionUserAgents="gozilla, traviata"
对于以下的浏览器,不启用压缩
 
4) compressableMimeType="text/html,text/xml"
 压缩类型


我这里的配置内容为:<o:p></o:p>

 1<v:shape id="_x0000_i1039" type="#_x0000_t75" alt="" style="WIDTH: 8.25pt; HEIGHT: 12pt"> <v:imagedata o:href="http://www.blogjava.net/Images/OutliningIndicators/None.gif" src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image001.gif"></v:imagedata></v:shape>    <Connector port="80" maxHttpHeaderSize="8192"
 2<v:shape id="_x0000_i1040" type="#_x0000_t75" alt="" style="WIDTH: 8.25pt; HEIGHT: 12pt"> <v:imagedata o:href="http://www.blogjava.net/Images/OutliningIndicators/None.gif" src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image001.gif"></v:imagedata></v:shape>               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
 3<v:shape id="_x0000_i1041" type="#_x0000_t75" alt="" style="WIDTH: 8.25pt; HEIGHT: 12pt"> <v:imagedata o:href="http://www.blogjava.net/Images/OutliningIndicators/None.gif" src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image001.gif"></v:imagedata></v:shape>               enableLookups="false" redirectPort="8443" acceptCount="100"
 4<v:shape id="_x0000_i1042" type="#_x0000_t75" alt="" style="WIDTH: 8.25pt; HEIGHT: 12pt"> <v:imagedata o:href="http://www.blogjava.net/Images/OutliningIndicators/None.gif" src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image001.gif"></v:imagedata></v:shape>               connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="utf-8"
 5<v:shape id="_x0000_i1043" type="#_x0000_t75" alt="" style="WIDTH: 8.25pt; HEIGHT: 12pt"> <v:imagedata o:href="http://www.blogjava.net/Images/OutliningIndicators/None.gif" src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image001.gif"></v:imagedata></v:shape>                  compression="on" 
 6<v:shape id="_x0000_i1044" type="#_x0000_t75" alt="" style="WIDTH: 8.25pt; HEIGHT: 12pt"> <v:imagedata o:href="http://www.blogjava.net/Images/OutliningIndicators/None.gif" src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image001.gif"></v:imagedata></v:shape>               compressionMinSize="2048" 
 7<v:shape id="_x0000_i1045" type="#_x0000_t75" alt="" style="WIDTH: 8.25pt; HEIGHT: 12pt"> <v:imagedata o:href="http://www.blogjava.net/Images/OutliningIndicators/None.gif" src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image001.gif"></v:imagedata></v:shape>               noCompressionUserAgents="gozilla, traviata" 
 8<v:shape id="_x0000_i1046" type="#_x0000_t75" alt="" style="WIDTH: 8.25pt; HEIGHT: 12pt"> <v:imagedata o:href="http://www.blogjava.net/Images/OutliningIndicators/None.gif" src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image001.gif"></v:imagedata></v:shape>               compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"  />
 9<v:shape id="_x0000_i1047" type="#_x0000_t75" alt="" style="WIDTH: 8.25pt; HEIGHT: 12pt"> <v:imagedata o:href="http://www.blogjava.net/Images/OutliningIndicators/None.gif" src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image001.gif"></v:imagedata></v:shape>    <!-- Note : To disable connection timeouts, set connectionTimeout value
10<v:shape id="_x0000_i1048" type="#_x0000_t75" alt="" style="WIDTH: 8.25pt; HEIGHT: 12pt"> <v:imagedata o:href="http://www.blogjava.net/Images/OutliningIndicators/None.gif" src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image001.gif"></v:imagedata></v:shape>     to 0 -->
11<v:shape id="_x0000_i1049" type="#_x0000_t75" alt="" style="WIDTH: 8.25pt; HEIGHT: 12pt"> <v:imagedata o:href="http://www.blogjava.net/Images/OutliningIndicators/None.gif" src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image001.gif"></v:imagedata></v:shape>    
12<v:shape id="_x0000_i1050" type="#_x0000_t75" alt="" style="WIDTH: 8.25pt; HEIGHT: 12pt"> <v:imagedata o:href="http://www.blogjava.net/Images/OutliningIndicators/None.gif" src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image001.gif"></v:imagedata></v:shape>    <!-- Note : To use gzip compression you could set the following properties :
13<v:shape id="_x0000_i1051" type="#_x0000_t75" alt="" style="WIDTH: 8.25pt; HEIGHT: 12pt"> <v:imagedata o:href="http://www.blogjava.net/Images/OutliningIndicators/None.gif" src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image001.gif"></v:imagedata></v:shape>    
14<v:shape id="_x0000_i1052" type="#_x0000_t75" alt="" style="WIDTH: 8.25pt; HEIGHT: 12pt"> <v:imagedata o:href="http://www.blogjava.net/Images/OutliningIndicators/None.gif" src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image001.gif"></v:imagedata></v:shape>               compression="on" 
15<v:shape id="_x0000_i1053" type="#_x0000_t75" alt="" style="WIDTH: 8.25pt; HEIGHT: 12pt"> <v:imagedata o:href="http://www.blogjava.net/Images/OutliningIndicators/None.gif" src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image001.gif"></v:imagedata></v:shape>               compressionMinSize="2048" 
16<v:shape id="_x0000_i1054" type="#_x0000_t75" alt="" style="WIDTH: 8.25pt; HEIGHT: 12pt"> <v:imagedata o:href="http://www.blogjava.net/Images/OutliningIndicators/None.gif" src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image001.gif"></v:imagedata></v:shape>               noCompressionUserAgents="gozilla, traviata" 
17<v:shape id="_x0000_i1055" type="#_x0000_t75" alt="" style="WIDTH: 8.25pt; HEIGHT: 12pt"> <v:imagedata o:href="http://www.blogjava.net/Images/OutliningIndicators/None.gif" src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image001.gif"></v:imagedata></v:shape>               compressableMimeType="text/html,text/xml"
18<v:shape id="_x0000_i1056" type="#_x0000_t75" alt="" style="WIDTH: 8.25pt; HEIGHT: 12pt"> <v:imagedata o:href="http://www.blogjava.net/Images/OutliningIndicators/None.gif" src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image001.gif"></v:imagedata></v:shape>    -->
19<v:shape id="_x0000_i1057" type="#_x0000_t75" alt="" style="WIDTH: 8.25pt; HEIGHT: 12pt"> <v:imagedata o:href="http://www.blogjava.net/Images/OutliningIndicators/None.gif" src="file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtml1\01\clip_image001.gif"></v:imagedata></v:shape><o:p></o:p>

<o:p> </o:p>

       一旦启用了这个压缩功能后,我们怎么来测试压缩是否有效呢?首先Tomcat是根据浏览器请求头中的accept-encoding来判断浏览器是否支持压缩功能,如果这个值包含有gzip,就表明浏览器支持gzip压缩内容的浏览,所以我们可以用httpclient来写一个这样的简单测试程序  <o:p></o:p>

窗体顶端<o:p></o:p>

程序代码:<o:p></o:p>

package com.liusoft.dlog4j.test; 

import org.apache.commons.httpclient.HttpClient; 
import org.apache.commons.httpclient.methods.GetMethod; 

/** 
* HTTP
客户端测试类 
* @author liudong 
*/
 
public class HttpTester { 

/** 
* @param args 
*/
 
public static void main(String[] args) throws Exception{ 
  HttpClient http = 
new HttpClient(); 
  GetMethod get = 
new GetMethod("http://www.dlog.cn/js/prototype.js"); 
  try
  get.addRequestHeader(
"accept-encoding""gzip,deflate"); 
  get.addRequestHeader(
"user-agent""Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Alexa Toolbar; Maxthon 2.0)"); 
  
int er = http.executeMethod(get); 
  
if(er==200){ 
   System.out.println(get.getResponseContentLength()); 
   String html = get.getResponseBodyAsString(); 
   System.out.println(html); 
   System.out.println(html.getBytes().length); 
  } 
}
finally
   get.releaseConnection(); 



<o:p></o:p>

窗体底端<o:p></o:p>

<o:p> </o:p>

执行这个测试程序,看看它所输出的是什么内容,如果输出的是一些乱码,以及打印内容的长度远小于实际的长度,那么恭喜你,你的配置生效了,你会发现你网站的浏览速度比以前快多了。  

另外你最好对网站所用的javascriptcss也进行压缩:)<o:p></o:p>

<o:p> </o:p>

如果你懒得用上面这个程序测试,好吧,用这个也行:http://gzip.zzbaike.com/<o:p></o:p>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值