HTTP 壓縮能夠大大提高浏覽站點的速度,它的原理是,在client請求網 頁後,從server端将網頁檔案壓縮,再下載下傳到client,由client的浏覽器負責解 壓縮并浏覽。相對于普通的浏覽過程HTML ,CSS,Javascript , Text ,它能夠節省40%左右的流量。更為重要的是,它能夠對動态生成的,包含CGI、PHP , JSP , ASP ,
Servlet,SHTML等輸出的網頁也能進行壓縮,壓縮效率驚人
一 對于Tomcat5.0以後的版本号是支援對輸出内容進行壓縮的. 使用的是gzip壓縮格式
下 面是tomcat5.5.20 中的$tomcat_home$/conf/server.xml的原内容 1 < Connector port ="80" maxHttpHeaderSize ="8192"
maxThreads ="150" minSpareThreads ="25" maxSpareThreads ="75"
enableLookups ="false" redirectPort ="8443" acceptCount ="100"
connectionTimeout ="20000" disableUploadTimeout ="true" URIEncoding ="utf-8" />
<!-- Note : To disable connection timeouts, set connectionTimeout value
to 0 -->
<!-- Note : To use gzip compression you could set the following properties :
compression="on"
compressionMinSize="2048"
noCompressionUserAgents="gozilla, traviata"
compressableMimeType="text/html,text/xml"
-->從上面的第 8行内容能夠看出,要使用gzip壓縮功能,你能夠在Connector執行個體中加上例如以下 屬性就可以
1) compression="on" 打開壓縮功能
2) compressionMinSize="2048" 啟用壓縮的輸出内容大小,這裡面默覺得2KB
3) noCompressionUserAgents="gozilla, traviata" 對于下面的浏覽器,不啟用壓縮
4) compressableMimeType="text/html,text/xml" 壓縮類型(默覺得text/html,text/xml,text/plain)
我 這裡的配置内容為:
<Connector port="80" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="utf-8"
compression="on"
compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" />
<!-- Note : To disable connection timeouts, set connectionTimeout value
to 0 -->
<!-- Note : To use gzip compression you could set the following properties :
compression="on"
compressionMinSize="2048"
noCompressionUserAgents="gozilla, traviata"
compressableMimeType="text/html,text/xml"
-->
一旦啟用了這個壓縮功能後,我們怎麼來測試壓縮是否有效呢?首先Tomcat是依據浏覽器請求頭中的accept-encoding來推斷浏覽器是否支援 壓縮功能,假設這個值包括有gzip,就表明浏覽器支援gzip壓縮内容的浏覽,是以我們能夠用httpclient來寫一個這種簡單測試程式
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.methods.GetMethod;