先說明一下什麼是網頁GZIP壓縮設定,因為目前網頁都是以原始碼的模式進行傳遞,再藉由瀏覽器去直譯產出你看到的網頁,所以當你看到網頁原始碼時,都是一些如何呈現的語法,如果我們先將網頁原始碼壓縮後再傳輸,到了瀏覽者的電腦上再解開,這樣就可以簡省很多傳輸的頻寬。而網頁原始碼這種純文字格式的檔案,壓縮起來非常有成就感,因為裡面太多空白及相同的字眼,所以一般壓起來,都可以壓縮到只剩下十之一以下的容量,這樣就能快速傳送網頁資訊。
目前有支援GZIP的瀏覽器非常眾多,包含IE、Firefox、chrome等目前市佔率極高的瀏覽器都有支援,所以等於九成以上的瀏覽者都可以適用,這次我們就來說說JAVA
WEB APPLICATION Tomcat如何設定 GZIP壓縮傳輸設定,首先我們開啟Tomcat/conf/server.xml,找尋以下設定
<Connector
port="8080″ maxHttpHeaderSize="8192″
maxThreads="150″ minSpareThreads="25″ maxSpareThreads="75″
enableLookups="false" redirectPort="8443″ acceptCount="100″
connectionTimeout="20000″
disableUploadTimeout="true" />
這主要是設定Tomcat系統在運行時的一些參數,包含監聽的Port、同時最大接受的request等,其實還有很多參數可以設定,當然包含了GZIP的壓縮設定,所以我們可以在此加上以下參數maxThreads="150″ minSpareThreads="25″ maxSpareThreads="75″
enableLookups="false" redirectPort="8443″ acceptCount="100″
connectionTimeout="20000″
disableUploadTimeout="true" />
compression="on"
是否啟用壓縮機制
compressionMinSize="2048″
設定壓縮檔案最小的size,單位是Bytes,所以預設值為2K,這裡的意思是當檔案超過2K時才會進行壓縮
noCompressionUserAgents="gozilla, traviata"
設定不支援的瀏覽器就不使用壓縮
compressableMimeType="text/html,text/xml"
設定要壓縮的contextType為何,除了html及xml之外,還可以多設定一些也是原始碼的檔案例如text/css,text/javascript等,讓css及javascript的檔案也能壓縮傳輸,至於一些圖檔及已經壓縮過的檔案建議不要設進來,因為圖檔一般都已經有壓縮過了,如果將一些壓縮過的檔案再壓,除了浪費時間外,搞不好檔案還會愈壓愈大喔
所以我們就趕快設定看看是否有改善,加入上述壓縮的設定後,參數如下:是否啟用壓縮機制
compressionMinSize="2048″
設定壓縮檔案最小的size,單位是Bytes,所以預設值為2K,這裡的意思是當檔案超過2K時才會進行壓縮
noCompressionUserAgents="gozilla, traviata"
設定不支援的瀏覽器就不使用壓縮
compressableMimeType="text/html,text/xml"
設定要壓縮的contextType為何,除了html及xml之外,還可以多設定一些也是原始碼的檔案例如text/css,text/javascript等,讓css及javascript的檔案也能壓縮傳輸,至於一些圖檔及已經壓縮過的檔案建議不要設進來,因為圖檔一般都已經有壓縮過了,如果將一些壓縮過的檔案再壓,除了浪費時間外,搞不好檔案還會愈壓愈大喔
<Connector
port="8080″ maxHttpHeaderSize="8192″
maxThreads="150″ minSpareThreads="25″ maxSpareThreads="75″
enableLookups="false" redirectPort="8443″ acceptCount="100″
disableUploadTimeout="true"
connectionTimeout="20000″
compression="on"
compressionMinSize="2048″
noCompressionUserAgents="gozilla, traviata"
compressableMimeType="text/html,text/xml"/>
maxThreads="150″ minSpareThreads="25″ maxSpareThreads="75″
enableLookups="false" redirectPort="8443″ acceptCount="100″
disableUploadTimeout="true"
connectionTimeout="20000″
compression="on"
compressionMinSize="2048″
noCompressionUserAgents="gozilla, traviata"
compressableMimeType="text/html,text/xml"/>
- <%@ page import="javax.servlet.jsp.*,
- java.io.*,
- java.util.zip.*"
- %>
- <%
- String encodings = request.getHeader("Accept-Encoding");
- PrintWriter outWriter = null;
- if ((encodings != null) && (encodings.indexOf("gzip") != -1)) {
- OutputStream outA = response.getOutputStream();
- outWriter = new PrintWriter(new GZIPOutputStream(outA), false);
- response.setHeader("Content-Encoding", "gzip");
- System.out.println("ZIPPED VERSION");
- } else {
- System.out.println("UN-ZIPPED VERSION");
- outWriter = new PrintWriter(response.getOutputStream(), false);
- }
- outWriter.println("<HTML><BODY>");
- for(int i=0; i<10000; i++) {
- outWriter.println("blah blah blah<br>");
- }
- outWriter.println("</BODY></HTML>");
- outWriter.close();
- %>
http://herolin.twbbs.org/entry/how-to-setting-GZIP-compression-in-tomcat/
0 意見:
張貼留言