共用方式為


配置 <配置>

概觀

元素<scheme><httpCompression> 元素會針對 網際網路資訊服務 (IIS) 7 中的 GNU zip (Gzip) 和 Deflate 壓縮設定指定下列設定:

  • 名稱和 dll 屬性分別指定壓縮配置的名稱和提供者 DLL。 IIS 7 同時支援 Gzip 和 Deflate 壓縮,而且兩種壓縮配置目前都實作於 %windir%\system32\inetsrv\gzip.dll。

  • doStaticCompression 屬性會指定是否針對 name 屬性所指定的壓縮配置啟用靜態壓縮。 將 doStaticCompression 設定true 會指定用戶端要求時,將會壓縮靜態內容。 如果啟用靜態壓縮,則包含 “Accept-Encoding: gzip” 或 “Accept-Encoding: deflate” 標頭的靜態內容要求都會壓縮內容,只要 IIS 中啟用標頭中指定的壓縮配置即可。 如果要求不包含此標頭,或標頭指定 IIS 中未啟用的壓縮配置,則不會壓縮內容。

    如果 IIS 判斷應該壓縮回應,IIS 會檢查 HTTPCompression> 元素目錄<屬性所指定的壓縮目錄。 如果在目錄中找到靜態檔案的全新壓縮版本,則會將它傳送至客戶端瀏覽器。 如果找不到檔案的全新壓縮版本,且使用 urlCompression 元素的< dynamicCompressionBeforeCache> 屬性啟用隨選壓縮,IIS 會以未壓縮的形式傳送要求的檔案,並將該檔案新增至背景壓縮佇列。

  • doDynamicCompression 屬性會指定是否針對 name 屬性所指定的壓縮配置啟用動態壓縮。 將 doDynamicCompression 設定true 會指定用戶端要求時,將會壓縮動態內容。 如果啟用動態壓縮,每個包含 “Accept-Encoding: gzip” 或 “Accept-Encoding: deflate” 標頭的動態內容要求都會壓縮內容,只要 IIS 中啟用標頭中指定的壓縮配置即可。 如果要求不包含此標頭,或標頭指定 IIS 中未啟用的壓縮配置,則不會壓縮內容。

    注意

    由於動態內容的定義一律會變更,因此 IIS 不會快取動態內容的壓縮版本。 動態壓縮會耗用相當多的CPU時間和記憶體資源,而且應該只用於具有慢速網路連線和備用CPU時間的伺服器上。

  • 當 IIS 分別壓縮動態或靜態內容時,dynamicCompressionLevel 和 staticCompressionLevel 屬性會指定壓縮配置的壓縮層級。 較低的壓縮層級會產生稍微較大的壓縮檔案,但整體對 CPU 和記憶體資源的影響較低。 較高的壓縮層級通常會導致較小的壓縮檔案,但 CPU 和記憶體使用量較高。

注意

根據預設,IIS 7 中只能使用 Gzip 壓縮配置。 若要以程式設計方式啟用Deflate壓縮配置,請參閱 本檔的程式代碼範例 一節。

相容性

版本 備註
IIS 10.0 <scheme> 在 IIS 10.0 中修改專案。
IIS 8.5 專案 <scheme> 未在 IIS 8.5 中修改。
IIS 8.0 專案 <scheme> 未在 IIS 8.0 中修改。
IIS 7.5 專案 <scheme> 未在 IIS 7.5 中修改。
IIS 7.0 元素 <scheme><httpCompression> 元素是在 IIS 7.0 中引進的。
IIS 6.0 元素 <scheme> 會取代下列 IIS 6.0 中繼基底屬性:
  • HcCompressionDll
  • HcDoDynamicCompression
  • HcDoStaticCompression
  • HcDynamicCompressionLevel

設定

HTTP 壓縮通常會在 IIS 7 和更新版本的預設安裝上使用。 不過,預設只會安裝靜態壓縮。 若要安裝靜態或動態壓縮,請使用下列步驟。

Windows Server 2012 或 Windows Server 2012 R2

  1. 在工作列上,按一下 [伺服器管理員]
  2. 伺服器管理員 中,按兩下 [管理] 功能表,然後按下 [新增角色和功能]。
  3. 在 [ 新增角色和功能 精靈] 中,按 [ 下一步]。 選取安裝類型,然後按 [ 下一步]。 選取目的地伺服器,然後按 [下一步]。
  4. 在 [伺服器角色] 頁面上,依序展開 [網頁伺服器]、[網頁伺服器] 和 [效能],然後選取 [靜態內容壓縮] 和/或 [動態內容壓縮]。 按一下 [下一步] 。
    [效能] 窗格的螢幕快照,其中已選取 [靜態內容壓縮],並醒目提示 [動態內容壓縮]。
  5. 在 [選取功能] 頁面上,按一下 [下一步]
  6. 在 [確認安裝選項] 頁面上,按一下 [安裝]
  7. 在 [結果] 頁面上,按一下 [關閉]

Windows 8 或 Windows 8.1

  1. 在 [開始] 畫面上,將指標一路移至左下角,以滑鼠右鍵按兩下 [開始] 按鈕,然後按兩下 [控制台]。
  2. 控制台 中,按兩下 [程式和功能],然後按兩下 [開啟或關閉 Windows 功能]。
  3. 依序展開 [網際網路資訊服務]、[萬維網服務]、[效能功能],然後選取 [動態內容壓縮] 和/或 [靜態內容壓縮]。
    螢幕快照:顯示 [開啟或關閉視窗功能] 頁面展開的 [效能功能] 窗格,並醒目提示 [靜態內容壓縮]。
  4. 按一下 [確定]
  5. 按一下 [關閉] 。

Windows Server 2008 或 Windows Server 2008 R2

  1. 在任務欄上,按兩下 [開始],指向 [系統管理工具],然後按兩下 [伺服器管理員]。
  2. [伺服器管理員 階層] 窗格中,展開 [角色],然後按兩下 [網頁伺服器] [IIS]。
  3. 在 [Web 伺服器 (IIS)] 窗格中,捲動至 [角色服務] 區段,然後按兩下 [新增角色服務]。
  4. 在 [新增角色服務精靈] 的 [選取角色服務] 頁面上,如果您想要安裝動態壓縮和靜態內容壓縮,如果您想要安裝靜態壓縮,請選取 [動態內容壓縮],然後按 [下一步]。
    顯示 [選取角色服務] 頁面的螢幕快照,其中已展開 [效能] 節點,並醒目提示 [動態內容壓縮]。
  5. 在 [確認安裝選項] 頁面上,按一下 [安裝]
  6. 在 [結果] 頁面上,按一下 [關閉]

Windows Vista 或 Windows 7

  1. 在任務欄上,按兩下 [開始],然後按兩下 [控制台]。
  2. 控制台 中,按兩下 [程式和功能],然後按兩下 [開啟或關閉 Windows 功能]。
  3. 依序展開 [網際網路資訊服務]、[萬維網服務] 和 [效能功能]。
  4. 如果您想要安裝動態壓縮,請選取 [Http Compression Dynamic],如果您想要安裝靜態壓縮,請選取 [靜態內容壓縮]。
    [開啟或關閉 Windows 功能] 頁面的螢幕快照,其中顯示已展開的 [效能功能] 節點,並已選取 [H T T P Common Dynamics]。
  5. 按一下 [確定]

作法

沒有使用者介面可設定 IIS 7 的壓縮配置。 如需如何以程式設計方式設定壓縮配置的範例,請參閱 本檔的<程式代碼範例 >一節。

組態

屬性

屬性 描述
dll 必要的字串屬性。

指定與壓縮配置相關聯之壓縮 DLL 的完整檔案系統路徑和檔名。 萬維網發佈服務 (WWW 服務) 必須先重新啟動,此屬性的任何變更才會生效。
doDynamicCompression 選擇性的 Boolean 屬性。

指定是否壓縮動態內容的回應,例如 Active Server Pages (ASP) 和 ISAPI 延伸模組中的腳本。 如果此值在個別壓縮配置層級變更,必須在變更生效之前重新啟動 WWW 服務。

預設值是 true
doStaticCompression 選擇性的 Boolean 屬性。

指定 IIS 是否壓縮對靜態內容要求的回應。 因為這個屬性無法繼承,所以如果 name 屬性設定為 Gzip,則必須在全域層級 (<HTTPCompression>) 和個別配置層級設定為 true。 如果此值在個別壓縮配置層級變更,必須在變更生效之前重新啟動 WWW 服務。

注意: 靜態壓縮存放區必須位於磁碟分區或使用NTFS格式化的遠端共用中。 如果檔案存放區不是NTFS,則會停用靜態壓縮。 基於安全性考慮,FAT 快取存放區不會提供任何壓縮的回應。

預設值是 true
dynamicCompressionLevel 選擇性 uint 屬性。

指定壓縮動態內容時壓縮配置的壓縮層級。 層級的範圍從 0(最低壓縮層級和最低 CPU 使用量)到 10(最高壓縮層級和最高 CPU 使用量)。 在對此屬性進行任何變更生效之前,必須先重新啟動 WWW 服務。

注意: 因為動態壓縮會耗用相當多的 CPU 時間和記憶體資源,所以只會在網路連線緩慢和 CPU 時間備援的伺服器上使用它。 壓縮的靜態回應可以快取,因此不會影響 CPU 資源,因為動態回應也一樣。

預設值是 0
name 必要的字串屬性。

指定壓縮配置的名稱。 例如, GzipDeflate
staticCompressionLevel 選擇性 uint 屬性。

在壓縮靜態內容時,指定壓縮配置的壓縮層級。 層級的範圍從 0(最低壓縮層級和最低 CPU 使用量)到 10(最高壓縮層級和最高 CPU 使用量)。 0 表示已停用壓縮。 在對此屬性進行任何變更生效之前,必須先重新啟動 WWW 服務。

預設值是 7

子元素

元素 描述
remove 選擇性項目。

從 HTTP 壓縮配置集合中移除 HTTP 壓縮配置的參考。
clear 選擇性項目。

從 HTTP 壓縮配置集合中移除 HTTP 壓縮配置的所有參考。

組態範例

下列預設 <httpCompression> 元素是在 IIS 7 的 ApplicationHost.config 檔案中設定。 除非您使用 元素,否則此組態區段會繼承預設組 <clear> 態設定。

<httpCompression
      directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files">
   <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" />
   <dynamicTypes>
      <add mimeType="text/*" enabled="true" />
      <add mimeType="message/*" enabled="true" />
      <add mimeType="application/javascript" enabled="true" />
      <add mimeType="*/*" enabled="false" />
   </dynamicTypes>
   <staticTypes>
      <add mimeType="text/*" enabled="true" />
      <add mimeType="message/*" enabled="true" />
      <add mimeType="application/javascript" enabled="true" />
      <add mimeType="*/*" enabled="false" />
   </staticTypes>
</httpCompression>

範例程式碼

下列程式代碼範例會將deflate壓縮配置新增至IIS 7。

AppCmd.exe

appcmd.exe set config -section:system.webServer/httpCompression /+"[name='deflate',doStaticCompression='True',doDynamicCompression='True',dll='%Windir%\system32\inetsrv\gzip.dll']" /commit:apphost

注意

當您使用 AppCmd.exe 來設定這些設定時,請務必將認可參數apphost設定為 。 這會將組態設定認可到 ApplicationHost.config 檔案中的適當位置區段。

C#

using System;
using System.Text;
using Microsoft.Web.Administration;

internal static class Sample
{
   private static void Main()
   {
      using (ServerManager serverManager = new ServerManager())
      {
         Configuration config = serverManager.GetApplicationHostConfiguration();
         ConfigurationSection httpCompressionSection = config.GetSection("system.webServer/httpCompression");
         ConfigurationElementCollection httpCompressionCollection = httpCompressionSection.GetCollection();

         ConfigurationElement schemeElement = httpCompressionCollection.CreateElement("scheme");
         schemeElement["name"] = @"deflate";
         schemeElement["doStaticCompression"] = true;
         schemeElement["doDynamicCompression"] = true;
         schemeElement["dll"] = @"%Windir%\system32\inetsrv\gzip.dll";
         httpCompressionCollection.Add(schemeElement);

         serverManager.CommitChanges();
      }
   }
}

VB.NET

Imports System
Imports System.Text
Imports Microsoft.Web.Administration

Module Sample

   Sub Main()
      Dim serverManager As ServerManager = New ServerManager
      Dim config As Configuration = serverManager.GetApplicationHostConfiguration
      Dim httpCompressionSection As ConfigurationSection = config.GetSection("system.webServer/httpCompression")
      Dim httpCompressionCollection As ConfigurationElementCollection = httpCompressionSection.GetCollection

      Dim schemeElement As ConfigurationElement = httpCompressionCollection.CreateElement("scheme")
      schemeElement("name") = "deflate"
      schemeElement("doStaticCompression") = True
      schemeElement("doDynamicCompression") = True
      schemeElement("dll") = "%Windir%\system32\inetsrv\gzip.dll"
      httpCompressionCollection.Add(schemeElement)

      serverManager.CommitChanges()
   End Sub

End Module

JavaScript

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";
var httpCompressionSection = adminManager.GetAdminSection("system.webServer/httpCompression", "MACHINE/WEBROOT/APPHOST");
var httpCompressionCollection = httpCompressionSection.Collection;

var schemeElement = httpCompressionCollection.CreateNewElement("scheme");
schemeElement.Properties.Item("name").Value = "deflate";
schemeElement.Properties.Item("doStaticCompression").Value = true;
schemeElement.Properties.Item("doDynamicCompression").Value = true;
schemeElement.Properties.Item("dll").Value = "%Windir%\\system32\\inetsrv\\gzip.dll";
httpCompressionCollection.AddElement(schemeElement);

adminManager.CommitChanges();

VBScript

Set adminManager = WScript.CreateObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"
Set httpCompressionSection = adminManager.GetAdminSection("system.webServer/httpCompression", "MACHINE/WEBROOT/APPHOST")
Set httpCompressionCollection = httpCompressionSection.Collection

Set schemeElement = httpCompressionCollection.CreateNewElement("scheme")
schemeElement.Properties.Item("name").Value = "deflate"
schemeElement.Properties.Item("doStaticCompression").Value = True
schemeElement.Properties.Item("doDynamicCompression").Value = True
schemeElement.Properties.Item("dll").Value = "%Windir%\system32\inetsrv\gzip.dll"
httpCompressionCollection.AddElement(schemeElement)

adminManager.CommitChanges()