如何驗證Tomcat配置的Gzip是否生效的方法

咱們在使用Tomcat優化配置時,都會開始Tomcat的Gzip壓縮功能,配置以下: javascript

<Connector port="8080"
    ...
    compression="on"
    compressionMinSize="2048"
    noCompressionUserAgents="gozilla,traviata"
    compressableMimeType="text/html,text/xml,application/javascript,text/css,text/plain" />
參數說明:
compression="on" 打開壓縮功能
compressionMinSize="2048" 啓用壓縮的輸出內容大小,當被壓縮對象的大小>=該值時纔會被壓縮,這裏面默認爲2KB
noCompressionUserAgents="gozilla, traviata" 對於如下的瀏覽器,不啓用壓縮
compressableMimeType="text/html,text/xml,application/javascript,text/css,text/plain" 壓縮類型

注意:tomcat7之後,js文件的mimetype類型變爲了application/javascript,具體的tomcat7定義的類型能夠在:conf/web.xml文件中找到。 css

那麼咱們如何測試配置的Gzip壓縮功能生效了呢?
答案就是:使用apache HttpClient訪問該tomcat加載項目中的一個靜態資源(好比一個js文件),而後打印請求的資源內容 或 資源ContentLength,若是打印的資源內容爲亂碼 或 ContentLength爲 -1,則說明gzip生效了。

代碼以下: html

public static void main(String[] args)
{
	String uri = "http://localhost:8080/gziptest/jquery.js";
	HttpClient httpClient = new DefaultHttpClient();
	HttpGet get = new HttpGet(uri);
	ResponseHandler<String> responseHandler = new BasicResponseHandler();
	
	try {
		// 設置模擬頭部
		get.setHeader("Accept-Encoding", "gzip,deflate");
		get.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.57 Safari/537.36");
		
		String content = httpClient.execute(get, responseHandler);
		System.out.println(content); // 若是gzip生效,這裏會打印出亂碼;不然會打印出jquery.js的內容
		
		/*
		HttpResponse response = httpClient.execute(get);
		long cLen = response.getEntity().getContentLength();
		System.out.println(cLen); // 若是gzip生效,這裏打印的長度值將會是 -1 或一個比原始文件大小小不少的值
		*/	
		
	} catch(Exception e) {
		// ignore ...
	} finally {
		httpClient.getConnectionManager().shutdown();	
	}
	
}
相關文章
相關標籤/搜索