http://blog.csdn.net/wang_159369/article/details/8107163
tomcat5.0以后的版本是支持對輸出內容進行gzip格式的壓縮的。該功能默認是關閉的,如果需要啟用該功能,我們需要修改tomcat的配置文件server.xml,修改的方法是在server.xml的節點
處加上屬性: compression=”on” ,即
下面是tomcat5.5.20 中的$tomcat_home$/conf/server.xml的原內容
1 < Connector port ="80" maxHttpHeaderSize ="8192" 2 maxThreads ="150" minSpareThreads ="25" maxSpareThreads ="75" 3 enableLookups ="false" redirectPort ="8443" acceptCount ="100" 4 connectionTimeout ="20000" disableUploadTimeout ="true" URIEncoding ="utf-8" /> 5 <!-- Note : To disable connection timeouts, set connectionTimeout value 6 to 0 --> 7 8 <!-- Note : To use gzip compression you could set the following properties : 9 10 compression="on" 11 compressionMinSize="2048" 12 noCompressionUserAgents="gozilla, traviata" 13 compressableMimeType="text/html,text/xml" 14 -->
從上面的第8行內容可以看出,要使用gzip壓縮功能,你可以在Connector實例中加上如下屬性即可
1) compression=”on” 打開壓縮功能
2) compressionMinSize=”2048″ 啟用壓縮的輸出內容大小,這里面默認為2KB
3) noCompressionUserAgents=”gozilla, traviata” 對於以下的瀏覽器,不啟用壓縮
4) compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain,image/png,image/jpg,image/gif" 壓縮類型
對於某些文本文件比如:log、txt等文件,我們也可以讓服務器采用gzip壓縮傳輸,修改conf目錄下web.xml,添加
<mime-mapping>
<extension>log</extension>
<mime-type>text/plain</mime-type>
</mime-mapping>
等,就可以指定壓縮傳輸了。通常情況下,壓縮傳輸能大幅度提高展示速度。
http://www.iteye.com/topic/1118087
新部署的一台服務器在做了性能調優以后發現FCK在線編輯器IE、firefox都出現報錯,只有chrome正常。百思不得其解,差點就把FCK換掉。經過千辛萬苦終於找到了原因(本人找錯誤原因的運氣一直都非常好):
開始以為是腳本亂碼,看了文件頭的那段注釋以后確認不是這個問題。
在firefox的firedebug上面看到的腳本一直報找不到對象的錯誤,難道是公司的網絡龜速導致腳本加載順序不協調所致?幾次刷新以后問題還在,304狀態碼說明不是網絡龜速的原因。
最后把FCK的javascript腳本下載到本地以后一看,只有20k左右,而完整的是249K,看來我找到原因了~~
還是百思不得其解,好好的靜態腳本文件為什么會下載了一部分就完了呢?而且首次下載的狀態碼是200,之后的刷新都是304,這違反了我對HTTP狀態碼的理解。
撇開前端的Nginx,直接訪問tomcat居然頁面就正常了。so~問題在nginx。nginx處理靜態資源的能力從來都沒有懷疑過(這再次違反了我對XXX的理解)。
靈光一閃,前后端的服務器最近都進行了調優,難道是這次修改了 配置文件導致的?so首先關閉nginx的gzip off;,重啟Nginx后全世界正常了。隨后關閉后端tomcat的compression="off",重新啟用Nginx的gzip,問題終於解 決了。
總結:多層服務器結構的系統啟用gzip壓縮要注意一個問題:前端服務器啟用了gzip以后,后端的服務器就不要啟用gzip壓縮了,不然部分瀏覽器會下載到不完整的文件。