天天看點

網站優化之Tomcat啟用Gzip壓縮

Gzip概念

HTTP協定上的GZIP編碼是一種用來改進WEB應用程式性能的技術。大流量的WEB站點常常使用GZIP壓縮技術來讓使用者感受更快的速度。這一般是指WWW伺服器中安裝的一個功能,當有人來通路這個伺服器中的網站時,伺服器中的這個功能就将網頁内容壓縮後傳輸到來訪的電腦浏覽器中顯示出來。即:通過減小HTTP響應大小來減少響應時間。相對于普通的浏覽過程HTML ,CSS,Javascript , Text ,它可以節省40%左右的流量。

這樣傳輸就快了,效果就是你點選網址後會很快的顯示出來。更為重要的是,它可以對動态生成的,包括CGI、PHP , JSP , ASP , Servlet,SHTML等輸出的網頁也能進行壓縮,壓縮效率也很高。當然這也會增加伺服器的負載. 一般伺服器中都安裝有這個功能子產品的。

Tomcat配置Gzip

開啟tomcat的Gzip隻需修改server.xml配置檔案,在Connector中添加下面4個參數即可。

21<Connector executor="tomcatThreadPool"  port="80" protocol="HTTP/1.1" 2•               connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8"/>           

複制

修改為

xxxxxxxxxx41<Connector executor="tomcatThreadPool"  port="80" protocol="HTTP/1.1" 2               connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8"3               compression="on" compressionMinSize="2048"   4               noCompressionUserAgents="gozilla, traviata"                            compressableMimeType="text/html,text/xml,application/javascript,text/css,text/plain,text/json"/>           

複制

  1. compression="on"

    開啟Gzip壓縮,預設為off
  2. compressionMinSize="2048"

    大于2KB的檔案才進行壓縮,對資源壓縮時會消耗一定的cpu性能,對2KB以上的資源才進行壓縮是官方給出的建議,實際使用時可以根據需求在響應時間和cpu性能之間做取舍;
  3. noCompressionUserAgents="gozilla, traviata"

    ,對于這兩種浏覽器,不進行壓縮
  4. compressableMimeType="text/html,text/xml,application/javascript,text/css,text/plain,text/json"

    表明支援html、xml、js、css、json等檔案格式的壓縮

還有其他配置,比如:

xxxxxxxxxx11useSendfile = "false" //useSendfile屬性預設為true, 會禁用任何可能的壓縮, 改成false就好了(可不配置)tomcat預設設定是當資料大小達到48kb時,将啟用檔案傳輸(sendfile),是以我們想要壓縮超過48kb的資料時必須将useSendfile設定為false           

複制

儲存退出,重新開機Tomcat伺服器即可。

但是我重新開機完發現并

沒有成功

。如果響應頭有

Content-Encoding: gzip

即為成功。

啟動Gzip無效的原因

1、如果發現内容沒有被壓縮,可以考慮調整compressionMinSize大小,如果請求資源小于這個數值,則不會啟用壓縮。

2、響應資料不是compressableMimeType參數配置的類型。可打開浏覽器檢查控制台,檢視響應頭Content-Type的值是否配置在compressableMimeType。

3、tomcat中的配置參數寫錯位置了,配置錯了。

但是我配置是正确的,沒有以上的情況

然後經過一番查找,發現是因為我這是加密請求,使用的https,如果是http以上方法即可。https的話需要在port="443"的Connector中也進行壓縮配置。如下:

xxxxxxxxxx101<!--證書配置 -->2    <Connector port="443" protocol="HTTP/1.1" SSLEnabled="*****"3    maxThreads="*****" scheme="https" secure="*****"4    keystoreFile="*****"5    keystorePass="*****"6    clientAuth="*****" sslProtocol="*****" 7     connectionTimeout="*****" redirectPort="*****" URIEncoding="UTF-8"8               compression="on" compressionMinSize="2048"   9               noCompressionUserAgents="gozilla, traviata"                            compressableMimeType="text/html,text/xml,application/javascript,text/css,text/plain,text/json"10    />           

複制

儲存再重新開機tomcat,發現已經好了。啟用成功!

網站優化之Tomcat啟用Gzip壓縮

去站長工具查也有了

網站優化之Tomcat啟用Gzip壓縮

然後對比下效果還是不錯的。

壓縮前

網站優化之Tomcat啟用Gzip壓縮

壓縮後

網站優化之Tomcat啟用Gzip壓縮