在 IIS6 中使用 GZIP


HTTP協議上的GZIP編碼是一種用來改進WEB應用程序性能的技術。大流量的WEB站點常常使用GZIP壓縮技術來讓用戶感受更快的速度。這一般是指WWW服務器中安裝的一個功能,當有人來訪問這個服務器中的網站時,服務器中的這個功能就將網頁內容壓縮後傳輸到來訪的電腦瀏覽器中顯示出來.一般對純文本內容可壓縮到原大小的40%.這樣傳輸就快了,效果就是你點擊網址後會很快的顯示出來.當然這也會增加服務器的負載.一般服務器中都安裝有這個功能模塊的。


現在主流瀏覽器基本都支持Gzip壓縮,因此這也成了WebServer優化策略的一種常規手段。啓用壓縮後能有效減少網頁傳輸數據大小,使得有限帶寬能提供更多的請求,並在一定程度上提高了網頁“顯示”速度。


094137150.png



IIS6提供了對Gzip的支持,只可惜有點不完善,需要我們自己手工做些設置。

步驟

1.在“IIS管理器”中,打開“網站>屬性”對話框,切換到“服務”頁卡,選中兩個壓縮選項。



094140219.png



2.新增一個服務擴展,路徑爲“%windir%System32inetsrvgzip.dll”。添加完成後,允許該擴展使用。


094142106.png



3.在“管理工具>服務”中,停止“IISAdminService”。

此時會彈出對話框說關閉www服務和ssl服務,我我們把這個幾個服務同時關閉



094144650.png



4.用記事本打開“%windir%system32inetsrvMetaBase.xml”,找到“IIsCompressionScheme”,按下述方法修改、保存。(建議修改前先做備份)

如果需要壓縮動態文件,則將HcDoDynamicCompression設置爲”TRUE”,並在HcScriptFileExtensions中增加您要壓縮的動態文件後綴名,如aspx(由於我要優化的系統中,做了html->aspx的URLRewrite,所以將html、htm也加入了)。

如果需要壓縮靜態文件,則將HcDoStaticCompression和HcDoOnDemandCompression設置爲“TRUE”,並在HcFileExtensions中增加您需要壓縮的靜態文件後綴名,如xml、css等。

HcDynamicCompressionLevel和HcOnDemandCompLevel表示需要的壓縮率,數字(0~9)越小壓縮率越低。


094147812.png



5.重啓服務器。

我們需要啓動IISAdminService服務、HttpSSL服務、WorldWideWeb服務

測試

我們用HttpWatchProfessional4.1看看啓用GZip後的效果。



094149976.png



看來效果非常不錯。

用了CDN服務,在按照上面的方法配置好Gzip後,不通過CDN,直接用Fidller或者FireFoxFirebug看頁面信息,都能看到已經通過Gzip壓縮過了,但是在Linux下面使用wget、curl等工具查看同樣的頁面信息時,卻發現沒有壓縮。這個問題一直沒有解決。最後在MetaBase.xml第三段IIsCompressionSchemes中

發現了三個很重要的參數:

HcNoCompressionForHttp10

HcNoCompressionForProxies

HcNoCompressionForRange

它們的默認值分別是:

HcNoCompressionForHttp10=”TRUE”

HcNoCompressionForProxies=”TRUE”

HcNoCompressionForRange=”FALSE”

當把HcNoCompressionForHttp10的值設置成FALSE時,wget與curl就可以看到頁面已經被gzip壓縮了。

由此分析:雖然wget與curl在頁面返回信息中寫着其使用了http1.1,但實際上它們實際仍然在使用http1.0。禁止爲http1.0啓用壓縮設爲否,就可以解決這個問題了。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章