iis6.0支援GZIP的詳細設定方法

來源:互聯網
上載者:User

 /Files/wucg/IIS6-SET-GZIP.rar

原文 

 http://jiaxu615.blog.163.com/blog/static/13463443720101343125753/

 

一.摘要


本文總結了如何為使用IIS託管的網站啟用Gzip壓縮, 從而減少網頁網路傳輸大小, 提高使用者顯示頁面的速度.

  二.前言.

  本文的知識點是從互連網收集整理, 主要來源於中文wiki.  使用YSlow檢測網站啟用了哪些最佳化時, Gzip是十分關鍵的一項. 啟動Gip壓縮將立竿見影的減少頁面的網路傳輸大小.

  三.HTTP壓縮概述

  HTTP壓縮是在Web伺服器和瀏覽器間傳輸壓縮常值內容的方法。HTTP壓縮採用通用的壓縮演算法如gzip等壓縮HTML、JavaScript或 CSS檔案。壓縮的最大好處就是降低了網路傳輸的資料量,從而提高用戶端瀏覽器的訪問速度。當然,同時也會增加一點點伺服器的負擔。Gzip是比較常見的一種HTTP壓縮演算法。

  四.HTTP壓縮工作原理

  Web伺服器處理HTTP壓縮的工作原理如下:

  1.Web伺服器接收到瀏覽器的HTTP請求後,檢查瀏覽器是否支援HTTP壓縮;

  在使用者瀏覽器發送請求的HTTP頭中,  帶有"Accept-Encoding: gzip, deflate"參數則表明支援gzip和deflate兩種壓縮演算法.

  2.如果瀏覽器支援HTTP壓縮,Web伺服器檢查請求檔案的尾碼名;

  靜態檔案和動態檔案尾碼啟動要所都需要在MetaBase.xml中設定.

  靜態檔案需要設定: HcFileExtensions Metabase Property (單擊跳轉到MSDN說明)

  動態檔案需要設定: HcScriptFileExtensions Metabase Property (單擊跳轉到MSDN說明)

  3.如果請求檔案是HTML、CSS等靜態檔案並且檔案尾碼啟用了壓縮,則Web伺服器到壓縮緩衝目錄中檢查是否已經存在請求檔案的最新壓縮檔;

  4.如果請求檔案的壓縮檔不存在,Web伺服器向瀏覽器返回未壓縮的請求檔案,並在壓縮緩衝目錄中存放請求檔案的壓縮檔;

 5.如果請求檔案的最新壓縮檔已經存在,則直接返回請求檔案的壓縮檔;
6.如果請求檔案是ASPX等動態檔案並且檔案尾碼啟用了壓縮,Web伺服器動態壓縮內容並返回瀏覽器,壓縮內容不存放到壓縮緩衝目錄中。
  五. 在IIS中啟用HTTP壓縮
  IIS預設並不支援HTTP壓縮,需要進行簡單的配置
  1.開啟Internet資訊服務(IIS)管理器,右擊"網站"->"屬性",選擇"服務"。在"HTTP壓縮"框中選中"壓縮應用程式檔案"和"壓縮靜態檔案",按需要設定"臨時目錄"和"臨時目錄的最大限制";

  2.提醒: 經實驗此步驟在本人機器上沒有作用, 可以忽略. 
  在Internet資訊服務(IIS)管理器,右擊"Web服務擴充"->"增加一個新的Web服務擴充...",在"建立Web服務擴充"框中輸入副檔名"HTTPCompression",添加"要求的檔案"為C:WINDOWSsystem32inetsrvgzip.dll,其中Windows系統目錄根據您的安裝可能有所不同,選中"設定擴充狀態為允許";

 3.使用文字編輯器開啟C:WindowsSystem32inetsrvMetaBase.xml(建議先備份),

  找到Location ="/LM/W3SVC/Filters/Compression/gzip用於設定gzip壓縮,

  找到Location ="/LM/W3SVC/Filters/Compression/deflate"用於設定deflate壓縮.

  上面兩個節點緊挨著.並且設定的屬性相同.

  如果需要壓縮動態檔案,則將HcDoDynamicCompression設定為"TRUE",並在HcScriptFileExtensions中增加您要壓縮的動態檔案尾碼名,如aspx;如果需要壓縮靜態檔案,則將HcDoStaticCompression和 HcDoOnDemandCompression設定為"TRUE",並在HcFileExtensions中增加您需要壓縮的靜態檔案尾碼名,如 xml、css等;HcDynamicCompressionLevel和HcOnDemandCompLevel表示需要的壓縮率,數值在0-10, 預設為0.

  HcDynamicCompressionLevel屬性說明:HcDynamicCompressionLevel Metabase Property

  HcOnDemandCompLevel 屬性說明:HcOnDemandCompLevel Metabase Property

  說明: 這兩個屬性值一般推薦設定為9, 具有最佳性價比.但是在我的window server 2003上, 壓縮率無論如何設定, jQuery和jQuery UI兩個檔案(58k/188k)壓縮後的大小一直相同.(20k/45k). 

  下面是我的執行個體:

<IIsCompressionScheme  Location ="/LM/W3SVC/Filters/Compression/deflate"
    HcCompressionDll="%windir%system32inetsrvgzip.dll"
    HcCreateFlags="0"
    HcDoDynamicCompression="TRUE"
    HcDoOnDemandCompression="TRUE"
    HcDoStaticCompression="true"
    HcDynamicCompressionLevel="9"
    HcFileExtensions="htm
           html
           txt
           js
           css 
           swf
           xml"
    HcOnDemandCompLevel="9"
    HcPriority="1"
    HcScriptFileExtensions="asp 
      aspx
      dll
      exe"
  >
</IIsCompressionScheme>
<IIsCompressionScheme  Location ="/LM/W3SVC/Filters/Compression/gzip"
    HcCompressionDll="%windir%system32inetsrvgzip.dll"
    HcCreateFlags="1"
    HcDoDynamicCompression="TRUE"
    HcDoOnDemandCompression="TRUE"
    HcDoStaticCompression="true"
    HcDynamicCompressionLevel="9"
    HcFileExtensions="htm
           html
           txt
           js
           css 
           swf
           xml"
    HcOnDemandCompLevel="9"
    HcPriority="1"
    HcScriptFileExtensions="asp 
      aspx
      dll
      exe"
  >
</IIsCompressionScheme>

4.編輯完畢後儲存MetaBase.xml檔案;如果檔案無法儲存,則可能IIS正在使用該檔案。開啟"開始"->"管理工具"->"服務",停止"IIS Admin Service"後,即可儲存;
  5.最後,重新啟動IIS。可以到HTTP壓縮測試網站驗證結果.以jQuery為例, 核心類庫和UI類庫原始大小分別是57k和188k,壓縮後分別是20k和45k: 

  我們通過Http頭中的: Content-Encoding:gzip 屬性判斷返回後的資料已經啟用了gzip壓縮: 
  
  使用YSlow檢測, 當只啟動靜態檔案壓縮時, Gzip壓縮評級為B: 

  當同時啟動了動態檔案壓縮時, Gzip壓縮評級為A: 

  六.要點總結
  1. 在修改MetaBase.xml檔案時, 要停止"IIS Admin Service"服務. 否則無法儲存.
  2.靜態壓縮和動態壓縮率最好設定為9. 
  3.上文的步驟2, 即使不添加Web服務擴充效果也是相同的.
  4.壓縮率設定對js檔案不起作用, 壓縮後大小總是相同的.
  5.圖片檔案即使啟用了gzip壓縮大小也沒有變化.
  七. 總結
  本文總結了如何在IIS中啟用Gzip壓縮.  在半年前的項目中我為網站啟用了Gzip, 今天整理此文主要為了整理自己的知識以便以後忘記時複習. 另外經查看ChinaCache公司提供的CDN也都啟用了Gzip壓縮.

 

 Firefox官網搜尋 YSlow外掛程式,它依賴於FireBug.

 http://www.mozillaonline.com/

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.