天天看點

在 IIS6 中使用 GZIP

HTTP協定上的GZIP編碼是一種用來改進WEB應用程式性能的技術。大流量的WEB站點常常使用GZIP壓縮技術來讓使用者感受更快的速度。這一般是指WWW伺服器中安裝的一個功能,當有人來通路這個伺服器中的網站時,伺服器中的這個功能就将網頁内容壓縮後傳輸到來訪的電腦浏覽器中顯示出來.一般對純文字内容可壓縮到原大小的40%.這樣傳輸就快了,效果就是你點選網址後會很快的顯示出來.當然這也會增加伺服器的負載.一般伺服器中都安裝有這個功能子產品的。

現在主流浏覽器基本都支援Gzip壓縮,是以這也成了WebServer優化政策的一種正常手段。啟用壓縮後能有效減少網頁傳輸資料大小,使得有限帶寬能提供更多的請求,并在一定程度上提高了網頁“顯示”速度。

<a href="http://blog.51cto.com/attachment/201310/094137150.png" target="_blank"></a>

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

步驟

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

<a href="http://blog.51cto.com/attachment/201310/094140219.png" target="_blank"></a>

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

<a href="http://blog.51cto.com/attachment/201310/094142106.png" target="_blank"></a>

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

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

<a href="http://blog.51cto.com/attachment/201310/094144650.png" target="_blank"></a>

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

如果需要壓縮動态檔案,則将HcDoDynamicCompression設定為”TRUE”,并在HcScriptFileExtensions中增加您要壓縮的動态檔案字尾名,如aspx(由于我要優化的系統中,做了html-&gt;aspx的URLRewrite,是以将html、htm也加入了)。

如果需要壓縮靜态檔案,則将HcDoStaticCompression和HcDoOnDemandCompression設定為“TRUE”,并在HcFileExtensions中增加您需要壓縮的靜态檔案字尾名,如xml、css等。

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

<a href="http://blog.51cto.com/attachment/201310/094147812.png" target="_blank"></a>

5.重新開機伺服器。

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

測試

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

<a href="http://blog.51cto.com/attachment/201310/094149976.png" target="_blank"></a>

看來效果非常不錯。

用了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啟用壓縮設為否,就可以解決這個問題了。

     本文轉自Tar0 51CTO部落格,原文連結:http://blog.51cto.com/tar0cissp/1309021,如需轉載請自行聯系原作者

繼續閱讀