其實是 tomcat 6 把注释整個拿掉,让大家以为Tomcat对Gzip不再支持,其实不然,大家可以看一下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%左右的流量。更为重要的是,它可以对动态生成的,包括CGI、PHP , 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; 窗体底端<o:p></o:p> <o:p> </o:p> |
执行这个测试程序,看看它所输出的是什么内容,如果输出的是一些乱码,以及打印内容的长度远小于实际的长度,那么恭喜你,你的配置生效了,你会发现你网站的浏览速度比以前快多了。
另外你最好对网站所用的javascript和css也进行压缩:)<o:p></o:p>
<o:p> </o:p>
如果你懒得用上面这个程序测试,好吧,用这个也行:http://gzip.zzbaike.com/<o:p></o:p>