使用tomcat的compression來提高網(wǎng)頁加載速度
Posted on 2010-09-15 23:39 瘋狂 閱讀(13573) 評論(4) 編輯 收藏 所屬分類: java 、java性能 、web 當(dāng)網(wǎng)站從服器端請求的數(shù)據(jù)較大時(shí),在有限的帶寬下就會造成瀏覽器加載緩慢,有時(shí)候會造成頁面沒有響應(yīng),使用戶體驗(yàn)變得很差,tomcat為我們提供了有效的解決了辦法,就是使用壓縮來解決傳輸問題。
tomcat使用HTTP/1.1 GZIP 來壓縮,以減少帶寬壓力,
首先介紹下gzip:
HTTP協(xié)議上的GZIP編碼是一種用來改進(jìn)WEB應(yīng)用程序性能的技術(shù)。大流量的WEB站點(diǎn)常常使用GZIP壓縮技術(shù)來讓用戶感受更快的速度。這一般是指WWW服務(wù)器中安裝的一個(gè)功能,當(dāng)有人來訪問這個(gè)服務(wù)器中的網(wǎng)站時(shí),服務(wù)器中的這個(gè)功能就將網(wǎng)頁內(nèi)容壓縮后傳輸?shù)絹碓L的電腦瀏覽器中顯示出來.一般對純文本內(nèi)容可壓縮到原大小的40%.這樣傳輸就快了,效果就是你點(diǎn)擊網(wǎng)址后會很快的顯示出來.當(dāng)然這也會增加服務(wù)器的負(fù)載. 一般服務(wù)器中都安裝有這個(gè)功能模塊的.
我們使用簡單的例子來介紹tomcat的壓縮使用:(使用firebug查看請求情況)
首先是一個(gè)簡單的servlet:
內(nèi)容:
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

response.setContentType("text/html");
PrintWriter out = response.getWriter();
out
.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
out.println("<HTML>");
out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>");
out.println(" <BODY>");
out.print(" <select> ");
for (int i = 0; i < 100000; i++) {
out.print("<option>testtesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttest"+i+"</option>");
}
out.println("</select>");
out.println(" </BODY>");
out.println("</HTML>");
out.flush();
out.close();
}
我們將輸出一個(gè)十萬個(gè)選項(xiàng)的下拉框,在不使用的壓縮的時(shí)候:

請求數(shù)據(jù)達(dá)到9m ,大概的計(jì)算下我的下載用時(shí)(4m長城寬帶):9*1024/(4*1024/8)=18m ,加上多人共享帶寬,也就是差不多20m。firebug顯示20.96。
這個(gè)速度網(wǎng)站體驗(yàn)肯定是很差的,接下來使用tomcat的壓縮以后看看:
當(dāng)然是要對其進(jìn)行配置:
有以下幾個(gè)參數(shù)可以使用:
compression="on"
是否啟用壓縮 on為啟用(文本數(shù)據(jù)壓縮) off為不啟用, force 壓縮所有數(shù)據(jù)
compressionMinSize1="2048"
當(dāng)超過最小數(shù)據(jù)大小才進(jìn)行壓縮
noCompressionUserAgents="gozilla, traviata"
哪些客戶端發(fā)出的請求不壓縮,默認(rèn)是不限制
compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"
配置想壓縮的數(shù)據(jù)類型,默認(rèn)是
配置以后是這樣的:
<Connector port="8088" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
compression="on"
compressionMinSize1="2048"
noCompressionUserAgents="gozilla, traviata"
compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"/>
啟動后再看:

這次數(shù)據(jù)被壓縮到274.7k,響應(yīng)速度也減少了一半,當(dāng)然,服務(wù)器的數(shù)據(jù)壓縮和瀏覽器的數(shù)據(jù)解壓都需要使用時(shí)間。
例子完畢,
當(dāng)然tomcat的壓縮技術(shù)還有很多其他的特性,然而對于大數(shù)據(jù)量的請求不光是要使用這種技術(shù),還需要在其他地方下功夫,比如ajax技術(shù),緩存等等,
也希望大家補(bǔ)充學(xué)習(xí),謝謝。
tomcat使用HTTP/1.1 GZIP 來壓縮,以減少帶寬壓力,
首先介紹下gzip:
HTTP協(xié)議上的GZIP編碼是一種用來改進(jìn)WEB應(yīng)用程序性能的技術(shù)。大流量的WEB站點(diǎn)常常使用GZIP壓縮技術(shù)來讓用戶感受更快的速度。這一般是指WWW服務(wù)器中安裝的一個(gè)功能,當(dāng)有人來訪問這個(gè)服務(wù)器中的網(wǎng)站時(shí),服務(wù)器中的這個(gè)功能就將網(wǎng)頁內(nèi)容壓縮后傳輸?shù)絹碓L的電腦瀏覽器中顯示出來.一般對純文本內(nèi)容可壓縮到原大小的40%.這樣傳輸就快了,效果就是你點(diǎn)擊網(wǎng)址后會很快的顯示出來.當(dāng)然這也會增加服務(wù)器的負(fù)載. 一般服務(wù)器中都安裝有這個(gè)功能模塊的.
我們使用簡單的例子來介紹tomcat的壓縮使用:(使用firebug查看請求情況)
首先是一個(gè)簡單的servlet:
內(nèi)容:




















我們將輸出一個(gè)十萬個(gè)選項(xiàng)的下拉框,在不使用的壓縮的時(shí)候:
請求數(shù)據(jù)達(dá)到9m ,大概的計(jì)算下我的下載用時(shí)(4m長城寬帶):9*1024/(4*1024/8)=18m ,加上多人共享帶寬,也就是差不多20m。firebug顯示20.96。
這個(gè)速度網(wǎng)站體驗(yàn)肯定是很差的,接下來使用tomcat的壓縮以后看看:
當(dāng)然是要對其進(jìn)行配置:
有以下幾個(gè)參數(shù)可以使用:
compression="on"
是否啟用壓縮 on為啟用(文本數(shù)據(jù)壓縮) off為不啟用, force 壓縮所有數(shù)據(jù)
compressionMinSize1="2048"
當(dāng)超過最小數(shù)據(jù)大小才進(jìn)行壓縮
noCompressionUserAgents="gozilla, traviata"
哪些客戶端發(fā)出的請求不壓縮,默認(rèn)是不限制
compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"
配置想壓縮的數(shù)據(jù)類型,默認(rèn)是
text/html,text/xml,text/plain
配置以后是這樣的:







啟動后再看:
這次數(shù)據(jù)被壓縮到274.7k,響應(yīng)速度也減少了一半,當(dāng)然,服務(wù)器的數(shù)據(jù)壓縮和瀏覽器的數(shù)據(jù)解壓都需要使用時(shí)間。
例子完畢,
當(dāng)然tomcat的壓縮技術(shù)還有很多其他的特性,然而對于大數(shù)據(jù)量的請求不光是要使用這種技術(shù),還需要在其他地方下功夫,比如ajax技術(shù),緩存等等,
也希望大家補(bǔ)充學(xué)習(xí),謝謝。