主頁 > 知識庫 > GZIP壓縮Tomcat并提升web性能過程圖解

GZIP壓縮Tomcat并提升web性能過程圖解

熱門標簽:地圖標注能更改嗎 外呼系統(tǒng)全國 地圖標注員有發(fā)展前景嗎 宜賓銷售外呼系統(tǒng)軟件 云南電商智能外呼系統(tǒng)哪家好 四川保險智能外呼系統(tǒng) 高德地圖標注公司需要錢 廈門防封電銷電話卡 濰坊寒亭400電話辦理多少錢

一、前言

  最近做了個項目,遇到這么一個問題:服務器返回給客戶端的json數(shù)據(jù)量太大(大概65M),在客戶端加載了1分多鐘才渲染完畢(當然這加載時間也和本地的下行帶寬有關),費時耗流量,用戶體驗極其不好。后來網(wǎng)上搜優(yōu)化的方法,就是Http壓縮。

  HTTP壓縮可以大大提高瀏覽網(wǎng)站的速度,它的原理是,在客戶端請求服務器對應資源后,從服務器端將資源文件壓縮,再輸出到客戶端,由客戶端的瀏覽器負責解壓縮并瀏覽。即:通過減小HTTP響應大小來減少響應時間。相對于普通的瀏覽過程HTML ,CSS,Javascript , Text ,它可以節(jié)省40%左右的流量。更為重要的是,它可以對動態(tài)生成的,包括CGI、PHP , JSP , ASP , Servlet,SHTML等輸出的網(wǎng)頁也能進行壓縮,壓縮效率也很高。而GZIP本身就是一種網(wǎng)絡流壓縮算法,而且應用相當廣泛。本文是針對apache tomcat 8.0.47進行配置GZIP壓縮的。瀏覽器使用Mozilla Firefox 35.0.1,調(diào)試用自帶的Firebug,以下和網(wǎng)絡有關的截圖來自Firebug控制臺。

  

二、Gzip壓縮簡介

1. HTTP 協(xié)議支持GZIP 壓縮機制,也稱協(xié)議壓縮。 HTTP GZIP壓縮是由WEB服務器和瀏覽器共同遵守的協(xié)議,也就是說WEB服務器和瀏覽器都必須遵守。目前主流的服務器和瀏覽器都支持GZIP壓縮技術。包括 Chrome、IE、FireFox、Opera 等;服務器有 tomcat、Apache 和 IIS 等。

2. GZIP 主要用來壓縮html,css,javascript,等靜態(tài)文本文件,也支持對動態(tài)生成的,包括CGI、PHP , JSP , ASP , Servlet,SHTML等輸出的網(wǎng)頁也能進行壓縮。

3. GZIP 壓縮的比率通常在3~10 倍之間,這樣可以大大節(jié)省服務器的網(wǎng)絡帶寬,大大提升瀏覽器的瀏覽速度。

4. GZIP 是一種數(shù)據(jù)壓縮格式,默認且目前僅使用deflate算法壓縮data部分;deflate是一種壓縮算法,是huffman編碼的一種加強。

5. 協(xié)議壓縮就是依據(jù)HTTP協(xié)議進行壓縮,不需要程序員進行壓縮,解壓編碼,而是把壓縮過程交給WEB服務器,將解壓過程交給客戶端。 如果客戶端為支持GZIP壓縮的瀏覽器,那么解壓過程也不需要程序員參與,瀏覽器會按照一定的規(guī)則自動進行解壓縮;如果客戶端為HttpClient ,那么就需要手動進行GZIP解碼了。

6. 壓縮過程:客戶端發(fā)送http請求,如果請求頭header中攜帶Accept-Encoding:gzip,deflate (現(xiàn)在的瀏覽器一般默認都是這樣),那么瀏覽器的意思是:服務器需要進行GZIP壓縮,再看響應內(nèi)容的類型是否滿足服務器配置的需要壓縮的類型,如果符合,那么WEB服務器在傳輸響應內(nèi)容之前,會對響應內(nèi)容進行壓縮,并在響應頭中添加Content-Encoding gzip;如果不符合,那么將不壓縮,直接返回。

7. 解壓過程:(瀏覽器)客戶端接收到響應,如果響應頭中包含Content-Encoding GZIP,那么瀏覽器會自動將響應內(nèi)容進行GZIP解壓縮,然后再呈現(xiàn)在頁面上。如果不包含,那么將直接呈現(xiàn)在頁面上。

 8.GZIP的缺點。相對于沒有進行GZIP的工程來說,使用GZIP要增加服務器壓縮的壓力(cpu消耗)、客戶端解壓縮的壓力,故而對服務器的配置需求更高。另外壓縮也要耗費時間,想占用更小的空間,得到高壓縮比率,肯定要犧牲較長的時間;反之,如果時間較為寶貴,要求快速,那么所得的壓縮比率一定較小,當然會占用更大的空間了(壓縮比率=原內(nèi)容大小/壓縮后大小,壓縮比率越大,則表明壓縮后占用空間的壓縮包越小),這就是物理空間與時間的矛盾。

三、tomcat中配置方法

  版本要求:Tomcat5.0以上。 修改%TOMCAT_HOME%/conf/server.xml,修訂節(jié)點如下:

<Connector port="8080"
protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
compression="on"
compressionMinSize="2048"
noCompressionUserAgents="gozilla, traviata"
compressableMimeType="text/html,text/xml,text/javascript,
application/javascript,text/css,text/plain,text/json"/>

    參數(shù)說明:

  1、compression="on" 開啟壓縮??蛇x值:"on"開啟,"off"關閉,"force"任何情況都開啟。

  2、compressionMinSize="2048"大于2KB的文件才進行壓縮。用于指定壓縮的最小數(shù)據(jù)大小,單位B,默認2048B。注意此值的大小,如果配置不合理,產(chǎn)生的后果是小文件壓縮后反而變大了,達不到預想的效果。

  3、noCompressionUserAgents="gozilla, traviata",對于這兩種瀏覽器,不進行壓縮(我也不知道這兩種瀏覽器是啥,百度上沒找到),其值為正則表達式,匹配的UA將不會被壓縮,默認空。

  4、compressableMimeType="text/html,text/xml,application/javascript,text/css,text/plain,text/json"會被壓縮的MIME類型列表,多個逗號隔,表明支持html、xml、js、css、json等文件格式的壓縮(plain為無格式的,但對于具體是什么,我比較概念模糊)。compressableMimeType很重要,它用來告知tomcat要對哪一種文件進行壓縮,如果類型指定錯誤了,肯定是無法壓縮的。那么,如何知道要壓縮的文件類型呢?可以通過以下這種方法找到。

  

四、檢查配置是否成功

  修改完之后重啟下tomcat即可,最后去檢測網(wǎng)站:http://seo.chinaz.com/?host=iitshare.com查詢下效果

  

五、常見錯誤(配置后沒效果)

  可通過以下步驟排查:

  1、tomcat中的配置參數(shù)寫錯位置了。注意配置參數(shù)應該寫到下圖中A區(qū)而不是B區(qū),就是protocol="HTTP/1.1"那個Connector中。

  

  2、響應數(shù)據(jù)不是compressableMimeType參數(shù)配置的類型。我就遇到了這個坑,我們項目前后端傳輸用的是json。所以我最開始以為是“text/json”,后來打開Firebug的控制臺,原來Content-Type的值是“application/json”。見圖三。

  3、響應數(shù)據(jù)的大小小于compressionMinSize的配置值。

附:優(yōu)化結果

    可以看到 壓縮比率 = 65.6 / 8.4 = 7.810, 時間比率 = 96 / 16.2 = 5.926,已經(jīng)是很理想了。

    

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

標簽:巴彥淖爾 紅河 德州 滁州 廣安 回訪 廊坊 湛江

巨人網(wǎng)絡通訊聲明:本文標題《GZIP壓縮Tomcat并提升web性能過程圖解》,本文關鍵詞  GZIP,壓縮,Tomcat,并,提升,;如發(fā)現(xiàn)本文內(nèi)容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《GZIP壓縮Tomcat并提升web性能過程圖解》相關的同類信息!
  • 本頁收集關于GZIP壓縮Tomcat并提升web性能過程圖解的相關信息資訊供網(wǎng)民參考!
  • 推薦文章