博客鏈接:zjlbog
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個參數即可。
將
<Connector executor="tomcatThreadPool" port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8"/>
修改為
<Connector executor="tomcatThreadPool" port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" compression="on" compressionMinSize="2048" noCompressionUserAgents="gozilla, traviata" compressableMimeType="text/html,text/xml,application/javascript,text/css,text/plain,text/json"/>
compression="on"
開啟Gzip壓縮,默認為offcompressionMinSize="2048"
大於2KB的文件才進行壓縮,對資源壓縮時會消耗一定的cpu性能,對2KB以上的資源才進行壓縮是官方給出的建議,實際使用時可以根據需求在響應時間和cpu性能之間做取舍;noCompressionUserAgents="gozilla, traviata"
,對於這兩種瀏覽器,不進行壓縮compressableMimeType="text/html,text/xml,application/javascript,text/css,text/plain,text/json"
表明支持html、xml、js、css、json等文件格式的壓縮
還有其他配置,比如:
useSendfile = "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中也進行壓縮配置。如下:
<!--證書配置 --> <Connector port="443" protocol="HTTP/1.1" SSLEnabled="*****" maxThreads="*****" scheme="https" secure="*****" keystoreFile="*****" keystorePass="*****" clientAuth="*****" sslProtocol="*****" connectionTimeout="*****" redirectPort="*****" URIEncoding="UTF-8" compression="on" compressionMinSize="2048" noCompressionUserAgents="gozilla, traviata" compressableMimeType="text/html,text/xml,application/javascript,text/css,text/plain,text/json" />
保存再重啟tomcat,發現已經好了。啟用成功!
去站長工具查也有了
然后對比下效果還是不錯的。
壓縮前
壓縮后