Archive

文章標籤 ‘gzip’

Tomcat網頁GZIP壓縮設定

2010年4月16日 尚無評論

相信絕大部份的程式設計師,內心都會有一個小小的願望,就是自己寫的系統可以給很多人使用,當系統愈有名氣時,自己就愈高興,不過或許這也是另一個考驗的開始…..

當多人使用系統時,除了程式要寫的好之外,系統的硬體等級、應用系統伺服器的調校、資料庫參數的調校等當然還有頻寬的限制等,都是會影響你系統運行時的品質,上述要點,一個出了問題,就算你其它的設定再好,也沒啥鳥用,但當都一一調整後,你的系統還是出現負擔過重時,在有限的資源無法擴充之下,就只能吹毛求疵從各項再去下手。本次要和大家介紹的網站設定GZIP壓縮設定,就是一般常會忘了可以這樣設定,並且這樣的設定可以大幅改善頻寬的使用,經小弟的測試,一般一個圖文並貌的網站,總共約可以減少至少一半以上的大小,這樣你頻寬瞬間可以大幅度支援更多使用者,就讓我快點告訴大家這個好用的設定吧。

先說明一下什麼是網頁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的壓縮設定,所以我們可以在此加上以下參數

  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的檔案也能壓縮傳輸,至於一些圖檔及已經壓縮過的檔案建議不要設進來,因為圖檔一般都已經有壓縮過了,如果將一些壓縮過的檔案再壓,除了浪費時間外,搞不好檔案還會愈壓愈大喔

所以我們就趕快設定看看是否有改善,加入上述壓縮的設定後,參數如下:

<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”/>

除了Tomcat可以這樣設定外,如果你有使用Apach也可以很容易設定GZIP壓縮設定,如果有興趣,請去找孤狗大師問問題吧!!

Categories: JAVA Tags: ,