今天在路上偶爾想到,既然js,html,圖片等靜態(tài)內(nèi)容可以通過http gzip壓縮的方式傳輸?shù)綖g覽器(相對(duì)于普通的瀏覽過程HTML ,CSS,Javascript , Text ,它可以節(jié)省40%左右的流量),那用jsp,servlet等動(dòng)態(tài)創(chuàng)建的內(nèi)容是否也可以壓縮傳輸呢?還有AJAX的請(qǐng)求內(nèi)容是否也可以用gziap壓縮傳輸?
帶著這些問題在網(wǎng)上查了下資料
AJAX的請(qǐng)求可以通過在http request中增加一個(gè)頭標(biāo)識(shí):accept-encoding,值為"gzip"的方式實(shí)現(xiàn)
servlet則可以通過配置一個(gè)filter來實(shí)現(xiàn)
針對(duì)Apache2.0之前的版本,可以通過添加第三方的module_gzip模塊來啟用
針對(duì)Apache2.0及之后的版本,可以通過mod_deflate啟動(dòng)
下面的一個(gè)鏈接詳細(xì)介紹了apache,tomcat中的配置方法:
http://www.128kj.com/article/article5/DA6B1D7BCDE9DE999C34E7379E18B35A.htm?id=2746
http://blogger.org.cn/blog/more.asp?name=lhwork&id=21867
用tomcat 6的可以到下面的url參考:
http://tomcat.apache.org/tomcat-6.0-doc/config/http.html
在tomcat的server.xml的connector部分,把compression="force"選項(xiàng)加上,然后,就可以用下面的代碼測(cè)試,我是在demo應(yīng)用下放了個(gè)md5.js:
/**
* Created at 2008-03-21.
*/
package com.demo.test.http.gzip;
import junit.framework.TestCase;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.methods.GetMethod;
/**
* @author pony
* 如果有任何對(duì)代碼的修改,請(qǐng)按下面的格式注明修改的內(nèi)容.
* 序號(hào) 時(shí)間 作者 修改內(nèi)容
* 1. 2008-3-21 pony created this class.
*
*/
public class TestTomcatGzipConfigure extends TestCase {
public void testGetGzipContentFromTomcat() throws Exception {
HttpClient http = new HttpClient();
GetMethod get = new GetMethod("http://192.168.66.128:8080/demo/md5.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();
}
}
}