現在主流瀏覽器基本都支持 Gzip 壓縮,因此這也成了 WebServer 優化策略的一種常規手段。啟用壓縮后能有效減少網頁傳輸數據大小,使得有限帶寬能提供更多的請求,并在一定程度上提高了網頁 "顯示" 速度。
IIS6 提供了對 Gzip 的支持,只可惜有點不完善,需要我們自己手工做些設置。
步驟:
1. 在 "IIS 管理器" 中,打開 "網站 > 屬性" 對話框,切換到 "服務" 頁卡,選中兩個壓縮選項。
2. 新增一個服務擴展,路徑為 "%windir%/System32/inetsrv/gzip.dll"。添加完成后,允許該擴展使用。
3. 在 "管理工具 > 服務" 中,停止 "IIS Admin Service"。
4. 用記事本打開 "%windir%/system32/inetsrv/MetaBase.xml",找到 "IIsCompressionScheme",按下述方法修改、保存。(建議修改前先做備份)
如果需要壓縮動態文件,則將 HcDoDynamicCompression設置為"TRUE",并在HcScriptFileExtensions中增加您要壓縮的動態文件后綴名,如aspx (由于我要優化的系統中,做了 html -> aspx 的 URL Rewrite,所以將 html、htm 也加入了)。
如果需要壓縮靜態文件,則將HcDoStaticCompression和HcDoOnDemandCompression設置為 "TRUE",并在HcFileExtensions中增加您需要壓縮的靜態文件后綴名,如xml、css等。
HcDynamicCompressionLevel和HcOnDemandCompLevel表示需要的壓縮率,數字(0~9)越小壓縮率越低。
如果修改完MetaBase.xml,提示”文件正在使用,無法保存“,可依下列辦法解決:
5. 重啟IIS。
測試:
方法一、可通過 http://tool.chinaz.com/Gzips/ 輸入網站首頁地址,進行測試!
方法二、我們也可以用 HttpWatch Professional 4.1 看看啟用 GZip 后的效果。
看來效果非常不錯。
用了CDN服務,在按照上面的方法配置好Gzip后,不通過CDN,直接用Fidller或者FireFox Firebug看頁面信息,都能看到已經通過Gzip壓縮過了,但是在Linux下面使用wget、curl等 工具查看同樣的頁面信息時,卻發現沒有壓縮。這個問題一直沒有解決。最后在MetaBase.xml第三段IIsCompressionSchemes中發現了三個很重要的參數:
它們的默認值分別是:
當把HcNoCompressionForHttp10的值設置成FALSE時,wget與curl就可以看到頁面已經被gzip壓縮了。
由此分析:雖然wget與curl在頁面返回信息中寫著其使用了http1.1,但實際上它們實際仍然在使用http1.0。禁止為http1.0啟用壓縮設為否,就可以解決這個問題了。
新聞熱點
疑難解答
圖片精選