HTTP 压缩 <httpCompression>

概述

<httpCompression> 元素指定 Internet Information Services (IIS) 7 的 HTTP 压缩设置。 HTTP 压缩可以加快 IIS 和接受压缩文件的客户端浏览器之间的传输速度。

注意

HTTP 客户端必须通过发送相应的 HTTP 接受编码标头来启动压缩内容的通信。 如果客户端无法进行 HTTP 压缩,则不会传递该标头,IIS 7 将始终返回未压缩的内容。

IIS 7 使用的压缩类型有两种:

  • 静态压缩

    IIS 7 将压缩的静态内容缓存在 directory 属性指定的路径中,这样就无需重新压缩已压缩的内容,从而提高了压缩性能。 IIS 7 压缩文件后,会向后续请求提供缓存目录中文件的压缩副本。

    staticCompressionEnableCpuUsagestaticCompressionDisableCpuUsage 属性指明 IIS 7 何时根据 CPU 使用率压缩静态文件。

    对于通常不会更改的文件,例如 HTML 文件 (*.html, *.htm)、文本文件 (*.txt)、Microsoft Office 文档 (*.doc, *.xls, *.ppt) 等,应使用静态压缩。可通过压缩来减小这些文件的大小,从而缩短客户端请求的下载时间,并降低在服务器上占用的带宽。

    注意

    图像文件(如 *.jpg 和 *.png 文件)也是静态文件,但 HTTP 压缩通常对这些文件没有作用,因为这些图像文件已经压缩。

  • 动态压缩

    与静态压缩不同的是,每次客户端请求内容时,IIS 7 都会执行动态压缩,但压缩版本不会缓存到磁盘。 之所以进行这种更改,是因为静态内容和动态内容之间存在主要差异。 静态内容不会更改。 但是,动态内容通常是由应用程序创建的内容,因此经常会更改,例如 Active Server Pages (ASP) 或 ASP.NET 内容。 由于动态内容应经常会更改,因此 IIS 7 不会缓存动态内容。

    dynamicCompressionEnableCpuUsagedynamicCompressionDisableCpuUsage 属性指明 IIS 7 何时根据 CPU 使用率压缩静态文件。

IIS 7 支持两种不同的行业标准压缩方案:

可以使用 <httpCompression> 元素的 <schemes> 元素启用这两种压缩方案中的每一个。

注意

<httpCompression> 元素指定 Internet Information Services (IIS) 7 的 HTTP 压缩设置,而 <urlCompression> 元素指定是否为 URL 命名空间启用压缩。

兼容性

版本 说明
IIS 10.0 <httpCompression> 元素在 IIS 10.0 中未进行修改。
IIS 8.5 IIS 8.5 中添加了 staticCompressionIgnoreHitFrequency 属性。
IIS 8.0 <httpCompression> 元素在 IIS 8.0 中未进行修改。
IIS 7.5 在 IIS 7.5 中,minFileSizeForComp 属性的默认值已更改,并添加了 dynamicCompressionBufferLimit 属性。
IIS 7.0 <httpCompression> 元素是在 IIS 7.0 中引入的。
IIS 6.0 <httpCompression> 元素替换以下 IIS 6.0 元数据库属性:
  • HcCacheControlHeader
  • HcCompressionDirectory
  • HcDoDiskSpaceLimiting
  • HcExpiresHeader
  • HcMaxDiskSpaceUsage
  • HcMinFileSizeForComp
  • HcNoCompressionForHttp10
  • HcNoCompressionForProxies
  • HcNoCompressionForRange
  • HcSendCacheHeaders

安装

IIS 7 及更高版本的默认安装中通常提供了 HTTP 压缩功能。 但默认情况下仅安装静态压缩。 若要安装静态或动态压缩,请遵循以下步骤。

Windows Server 2012 或 Windows Server 2012 R2

  1. 在任务栏上,单击 “服务器管理器”。
  2. 在“服务器管理器”中,单击“管理”菜单,然后单击“添加角色和功能”。
  3. 在“添加角色和功能”向导中,单击“下一步”。 选择安装类型,然后单击“下一步”。 选择目标服务器,然后单击“下一步”。
  4. 在“服务器角色”页上,展开“Web 服务器 (IIS)”,展开“Web 服务器”,展开“性能”,然后选择“静态内容压缩”和/或“动态内容压缩”。 单击 “下一步”
    Screenshot of Web Server and Performance node with Static Content Compression selected and Dynamic Content Compression highlighted.
  5. 在“选择功能”页上,单击“下一步”
  6. “确认安装选择”页上,单击“安装”
  7. 在“结果” 页面中单击“关闭”

Windows 8 或 Windows 8.1

  1. 在“开始”屏幕上,将指针一直移动到左下角,右键单击“开始”按钮,然后单击“控制面板”
  2. 在“控制面板”中,单击“程序与功能”,然后单击“打开或关闭 Windows 功能”。
  3. 展开“Internet Information Services”,展开“万维网服务”,展开“性能功能”,然后选择“动态内容压缩”和/或“静态内容压缩”。
    Screenshot of World Wide Web and Performance Features pane expanded showing Dynamic Content Compression and Static Content Compression selected.
  4. 单击“确定”。
  5. 单击“关闭” 。

Windows Server 2008 或 Windows Server 2008 R2

  1. 在任务栏上,单击“开始”,指向“管理工具”,然后单击“服务器管理器”。
  2. 在“服务器管理器”层次结构窗格中,展开“角色”,然后单击“Web 服务器 (IIS)”。
  3. 在“Web 服务器 (IIS)”窗格中,滚动到“角色服务”部分,然后单击“添加角色服务”。
  4. 在“添加角色服务”向导的“选择角色服务”页上,如果要安装动态压缩,请选择“动态内容压缩”,如果要安装静态压缩,则选择“静态内容压缩”然后单击“下一步”。
    Screenshot of Performance node expanded in Add Role Services page with Dynamic Content Compression highlighted.
  5. “确认安装选择”页中,单击“安装”
  6. 在“结果” 页面中单击“关闭”

Windows Vista 或 Windows 7

  1. 在任务栏上,单击“开始”,然后单击“控制面板”。
  2. 在“控制面板”中,单击“程序与功能”,然后单击“打开或关闭 Windows 功能”。
  3. 扩展“Internet Information Services”,展开“万维网服务”,然后展开“性能功能”。
  4. 如果要安装动态压缩,请选择“HTTP 压缩动态”,如果要安装静态压缩,请选择“静态内容压缩”。
    Screenshot of Performance Features node expanded and H T T P Compression Dynamic selected.
  5. 单击“确定”。

操作方式

如何为站点或应用程序启用或禁用静态和动态压缩

  1. 打开 Internet Information Services (IIS) 管理器:

    • 如果使用的是 Windows Server 2012 或 Windows Server 2012 R2:

      • 在任务栏上,单击“服务器管理器”,单击“工具”,然后单击“Internet Information Services (IIS)管理器”
    • 如果使用的是 Windows 8 或 Windows 8.1:

      • 按住 Windows 键,按字母 X,然后单击“控制面板”。
      • 单击“管理工具”,然后双击“Internet 信息服务(IIS)管理器”。
    • 如果使用的是 Windows Server 2008 或 Windows Server 2008 R2:

      • 在任务栏上,单击“开始”,指向“管理工具”,然后单击“Internet Information Services (IIS)管理器”
    • 如果使用的是 Windows Vista 或 Windows 7:

      • 在任务栏上,单击“开始”,然后单击“控制面板”。
      • 双击“管理工具”,然后双击“Internet 信息服务(IIS)管理器”。
  2. 在“连接”窗格中,转到要为其启用压缩的连接、站点、应用程序或目录。

  3. 在“开始”窗格中,双击“压缩”
    Screenshot of Default Web Site Home page showing Compression selected.

  4. 在“压缩”窗格中,勾选复选框以启用静态或动态压缩,或取消勾选复选标记以禁用静态或动态压缩。
    Screenshot shows Compression pane with Enable dynamic content compression and Enable static content compression boxes both selected.

  5. 完成上述相关步骤后,单击“操作”窗格中的“应用”。

如何为服务器启用或禁用静态和动态压缩

  1. 打开 Internet Information Services (IIS) 管理器:

    • 如果使用的是 Windows Server 2012 或 Windows Server 2012 R2:

      • 在任务栏上,单击“服务器管理器”,单击“工具”,然后单击“Internet Information Services (IIS)管理器”
    • 如果使用的是 Windows 8 或 Windows 8.1:

      • 按住 Windows 键,按字母 X,然后单击“控制面板”。
      • 单击“管理工具”,然后双击“Internet 信息服务(IIS)管理器”。
    • 如果使用的是 Windows Server 2008 或 Windows Server 2008 R2:

      • 在任务栏上,单击“开始”,指向“管理工具”,然后单击“Internet Information Services (IIS)管理器”
    • 如果使用的是 Windows Vista 或 Windows 7:

      • 在任务栏上,单击“开始”,然后单击“控制面板”。
      • 双击“管理工具”,然后双击“Internet 信息服务(IIS)管理器”。
  2. 在“连接”窗格中,突出显示服务器的名称。

  3. 在服务器的“主页”窗格中,双击“压缩”
    Screenshot shows servers Home pane with Compression highlighted.

  4. 在“压缩”窗格中,勾选复选框以启用静态或动态压缩,或取消勾选复选标记以禁用静态或动态压缩。
    Screenshot of Compression page showing both boxes for Enable dynamic content compression and Enable static content compression selected.

  5. 完成上述相关步骤后,单击“操作”窗格中的“应用”。

如何配置 staticCompressionIgnoreHitFrequency

  1. 打开 Internet Information Services (IIS) 管理器:

    • 如果使用的是 Windows Server 2012 R2:

      • 在任务栏上,单击“服务器管理器”,单击“工具”,然后单击“Internet Information Services (IIS)管理器”
    • 如果使用的是 Windows 8.1:

      • 按住 Windows 键,按字母 X,然后单击“控制面板”。
      • 单击“管理工具”,然后双击“Internet 信息服务(IIS)管理器”。
  2. 在“连接”窗格中选择服务器,然后双击“配置编辑器”。

  3. 在“配置编辑器”中,对于“部分”,选择“system.webServer”,然后选择“httpCompression”

  4. 对于 staticCompressionIgnoreHitFrequency,请输入 True 禁用仅静态文件在一段时间内达到特定次数时才进行压缩的行为,或输入 False 以启用该行为。
    Screenshot shows Configuration Editor page with True entered for static Compression Ignore Hit Frequency option.

  5. 在“操作”窗格中,单击“应用”

配置

特性

属性 说明
cacheControlHeader 可选的字符串属性。

指定 IIS 添加到 Cache-Control 标头的指令,此指令用于重写 HTTP Expires 标头。 此属性可确保较旧的客户端和代理服务器不会尝试缓存压缩文件。 若要启用此设置,必须将 sendCacheHeaders 属性设置为 true。 必须重启 WWW 服务才能让此属性的更改生效。

默认值为 max-age=86400
directory 可选的字符串属性。

指定临时存储和缓存的压缩版本静态文件的目录。

注意:在 IIS 6.0 中,IIS 临时压缩文件的默认目录路径为 %windir%\IIS 临时压缩文件。

默认值为 %SystemDrive%\inetpub\temp\IIS Temporary Compressed Files
doDiskSpaceLimiting 可选布尔属性。

指定是否限制所有压缩文件(存储在由目录属性指定的压缩目录中)可以占用的磁盘空间量。

默认值为 true
dynamicCompressionBufferLimit 可选 uint 属性。

指定在将缓冲区刷新到客户端之前 IIS 将缓冲的最大动态压缩数据量。 这会减少执行动态压缩所需的内存量。

注意:IIS 7.5 中添加了此属性。

默认值为 65536
dynamicCompressionDisableCpuUsage 可选 uint 属性。

指定 CPU 利用率百分比,如果达到该百分比,将禁用动态压缩。

注意:此属性充当关闭动态压缩的 CPU 上限。 当 CPU 使用率低于 dynamicCompressionEnableCpuUsage 属性中指定的值时,将重新启用动态压缩。

默认值为 90
dynamicCompressionEnableCpuUsage 可选 uint 属性。

指定 CPU 利用率的百分比,如果低于该百分比,将启用动态压缩。 该值必须介于 0 和 100 之间。 每 30 秒计算一次 CPU 使用率平均值。

注意:此属性充当关闭动态压缩的 CPU 下限。 当 CPU 使用率高于 dynamicCompressionDisableCpuUsage 属性中指定的值时,将禁用动态压缩。

默认值为 50
expiresHeader 可选的字符串属性。

指定随所有请求的压缩文件一起发送的 HTTP Expires 标头的内容,以及 cacheControlHeader 属性中指定的 Cache-Control 标头。 标头的这种组合可确保较旧的客户端和代理服务器不会尝试缓存压缩文件。 若要启用此设置,必须将 sendCacheHeaders 属性设置为 true。 必须重启万维网发布服务(WWW 服务),然后对此属性的更改才会生效。

默认值为 Wed, 01 Jan 1997 12:00:00 GMT
maxDiskSpaceUsage 可选 uint 属性。

指定压缩文件可在压缩目录中占用的磁盘空间字节数(以 MB 为单位)。 当压缩文件使用的空间超过此属性中值的 90% 时,IIS 会删除最近使用的文件,直到达到 90% 的使用级别。

注意:在 IIS 6.0 中,此限制以字节表示;在 IIS 7 中,以兆字节表示。 在 IIS 7 中,针对每个应用程序池应用一个限制。

默认值为 100
minFileSizeForComp 可选 uint 属性。

指定要使用按需压缩,文件必须包含的最小字节数(以千字节为单位)。

IIS 7.5 的默认值为 2700;IIS 7.0 的默认值为 256
noCompressionForHttp10 可选布尔属性。

指定是否对包含 HTTP 1.0 版本号的请求禁用压缩。

注意:某些 HTTP 1.0 客户端无法正确处理压缩对象的高速缓存。 可以使用此设置来避免将压缩文件返回到无法进行解压缩的客户端。

默认值为 true
noCompressionForProxies 可选布尔属性。

指定是否为通过代理服务器发出的压缩请求禁用 HTTP 1.1 响应。

注意:某些 HTTP 代理服务器无法正确处理压缩对象的缓存。 可以使用此设置来避免将压缩文件返回到无法进行解压缩的客户端。

默认值为 true
noCompressionForRange 可选布尔属性。

指定是否对包含 Range 标头的 HTTP 请求禁用压缩。

注意:某些客户端无法正确处理范围请求。 可以使用此设置来避免将压缩文件返回到无法进行解压缩的客户端。

默认值为 true
sendCacheHeaders 可选布尔属性。

指定是否随每个压缩响应一起发送 cacheControlHeaderexpiresHeader 中配置的标头。

默认值为 false
staticCompressionDisableCpuUsage 可选 uint 属性。

指定 CPU 利用率百分比,如果达到该百分比,将禁用静态压缩。 该值必须介于 0 和 100 之间。 每 30 秒计算一次 CPU 使用率平均值。

注意:此属性充当关闭静态压缩的 CPU 上限。 当 CPU 使用率低于 staticCompressionEnableCpuUsage 属性中指定的值时,将重新启用静态压缩。

默认值为 100
staticCompressionEnableCpuUsage 可选 uint 属性。

指定 CPU 利用率百分比,如果达到该百分比,将启用静态压缩。 该值必须介于 0 和 100 之间。 每 30 秒计算一次 CPU 使用率平均值。

注意:此属性充当关闭静态压缩的 CPU 下限。 当 CPU 使用率高于 staticCompressionDisableCpuUsage 属性中指定的值时,将禁用静态压缩。

默认值为 50
staticCompressionIgnoreHitFrequency 可选布尔属性。

如果为 True,则仅当静态文件在一段时间内达到特定命中次数时,才会禁用该静态文件的压缩行为。 在某些情况下,您可能希望始终压缩静态内容以降低带宽使用。 例如,如果系统在 Web 服务器与请求者之间使用具有边缘缓存的负载均衡器时,你可能希望始终压缩静态内容,这会导致未压缩的文件缓存在边缘服务器上,因为后续请求不会到达 Web 服务器。

如果未禁用该行为,则命中率等于或大于 20% 将导致压缩静态内容。 如果命中率更低,则不会压缩内容。

默认值为 False

子元素

元素 说明
scheme 可选元素。

指定 IIS 用于压缩客户端请求的压缩方案(Gzip 或 Deflate)。
dynamicTypes 可选元素。

指定动态压缩的配置设置。
staticTypes 可选元素。

指定静态压缩的配置设置。

配置示例

以下默认 <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>

代码示例

以下代码示例会将 Office 2003 文档的 MIME 类型添加到动态压缩类型列表中。

注意

Office 2007 文档使用内置压缩,因此无需由 IIS 压缩。

AppCmd.exe

appcmd.exe set config -section:system.webServer/httpCompression /+"dynamicTypes.[mimeType='application/msword',enabled='True']" /commit:apphost

appcmd.exe set config -section:system.webServer/httpCompression /+"dynamicTypes.[mimeType='application/vnd.ms-powerpoint',enabled='True']" /commit:apphost

appcmd.exe set config -section:system.webServer/httpCompression /+"dynamicTypes.[mimeType='application/vnd.ms-excel',enabled='True']" /commit:apphost

注意

使用 AppCmd.exe 配置这些设置时,必须确保将 commit 参数设置为 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 dynamicTypesCollection = httpCompressionSection.GetCollection("dynamicTypes");

         ConfigurationElement addElement = dynamicTypesCollection.CreateElement("add");
         addElement["mimeType"] = @"application/msword";
         addElement["enabled"] = true;
         dynamicTypesCollection.Add(addElement);

         ConfigurationElement addElement1 = dynamicTypesCollection.CreateElement("add");
         addElement1["mimeType"] = @"application/vnd.ms-powerpoint";
         addElement1["enabled"] = true;
         dynamicTypesCollection.Add(addElement1);

         ConfigurationElement addElement2 = dynamicTypesCollection.CreateElement("add");
         addElement2["mimeType"] = @"application/vnd.ms-excel";
         addElement2["enabled"] = true;
         dynamicTypesCollection.Add(addElement2);

         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 dynamicTypesCollection As ConfigurationElementCollection = httpCompressionSection.GetCollection("dynamicTypes")

      Dim addElement As ConfigurationElement = dynamicTypesCollection.CreateElement("add")
      addElement("mimeType") = "application/msword"
      addElement("enabled") = True
      dynamicTypesCollection.Add(addElement)

      Dim addElement1 As ConfigurationElement = dynamicTypesCollection.CreateElement("add")
      addElement1("mimeType") = "application/vnd.ms-powerpoint"
      addElement1("enabled") = True
      dynamicTypesCollection.Add(addElement1)

      Dim addElement2 As ConfigurationElement = dynamicTypesCollection.CreateElement("add")
      addElement2("mimeType") = "application/vnd.ms-excel"
      addElement2("enabled") = True
      dynamicTypesCollection.Add(addElement2)

      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 dynamicTypesCollection = httpCompressionSection.ChildElements.Item("dynamicTypes").Collection;

var addElement = dynamicTypesCollection.CreateNewElement("add");
addElement.Properties.Item("mimeType").Value = "application/msword";
addElement.Properties.Item("enabled").Value = true;
dynamicTypesCollection.AddElement(addElement);

var addElement1 = dynamicTypesCollection.CreateNewElement("add");
addElement1.Properties.Item("mimeType").Value = "application/vnd.ms-powerpoint";
addElement1.Properties.Item("enabled").Value = true;
dynamicTypesCollection.AddElement(addElement1);

var addElement2 = dynamicTypesCollection.CreateNewElement("add");
addElement2.Properties.Item("mimeType").Value = "application/vnd.ms-excel";
addElement2.Properties.Item("enabled").Value = true;
dynamicTypesCollection.AddElement(addElement2);

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 dynamicTypesCollection = httpCompressionSection.ChildElements.Item("dynamicTypes").Collection

Set addElement = dynamicTypesCollection.CreateNewElement("add")
addElement.Properties.Item("mimeType").Value = "application/msword"
addElement.Properties.Item("enabled").Value = True
dynamicTypesCollection.AddElement(addElement)

Set addElement1 = dynamicTypesCollection.CreateNewElement("add")
addElement1.Properties.Item("mimeType").Value = "application/vnd.ms-powerpoint"
addElement1.Properties.Item("enabled").Value = True
dynamicTypesCollection.AddElement(addElement1)

Set addElement2 = dynamicTypesCollection.CreateNewElement("add")
addElement2.Properties.Item("mimeType").Value = "application/vnd.ms-excel"
addElement2.Properties.Item("enabled").Value = True
dynamicTypesCollection.AddElement(addElement2)

adminManager.CommitChanges()

以下代码示例会将 Office 2003 文档的 MIME 类型添加到静态压缩类型列表中。

(> [!NOTE]

Office 2007 文档使用内置压缩,因此无需由 IIS 压缩。)

AppCmd.exe

appcmd.exe set config -section:system.webServer/httpCompression /+"staticTypes.[mimeType='application/msword',enabled='True']" /commit:apphost

appcmd.exe set config -section:system.webServer/httpCompression /+"staticTypes.[mimeType='application/vnd.ms-powerpoint',enabled='True']" /commit:apphost

appcmd.exe set config -section:system.webServer/httpCompression /+"staticTypes.[mimeType='application/vnd.ms-excel',enabled='True']" /commit:apphost

注意

使用 AppCmd.exe 配置这些设置时,必须确保将 commit 参数设置为 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 staticTypesCollection = httpCompressionSection.GetCollection("staticTypes");

         ConfigurationElement addElement = staticTypesCollection.CreateElement("add");
         addElement["mimeType"] = @"application/msword";
         addElement["enabled"] = true;
         staticTypesCollection.Add(addElement);

         ConfigurationElement addElement1 = staticTypesCollection.CreateElement("add");
         addElement1["mimeType"] = @"application/vnd.ms-powerpoint";
         addElement1["enabled"] = true;
         staticTypesCollection.Add(addElement1);

         ConfigurationElement addElement2 = staticTypesCollection.CreateElement("add");
         addElement2["mimeType"] = @"application/vnd.ms-excel";
         addElement2["enabled"] = true;
         staticTypesCollection.Add(addElement2);

         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 staticTypesCollection As ConfigurationElementCollection = httpCompressionSection.GetCollection("staticTypes")

      Dim addElement As ConfigurationElement = staticTypesCollection.CreateElement("add")
      addElement("mimeType") = "application/msword"
      addElement("enabled") = True
      staticTypesCollection.Add(addElement)

      Dim addElement1 As ConfigurationElement = staticTypesCollection.CreateElement("add")
      addElement1("mimeType") = "application/vnd.ms-powerpoint"
      addElement1("enabled") = True
      staticTypesCollection.Add(addElement1)

      Dim addElement2 As ConfigurationElement = staticTypesCollection.CreateElement("add")
      addElement2("mimeType") = "application/vnd.ms-excel"
      addElement2("enabled") = True
      staticTypesCollection.Add(addElement2)

      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 staticTypesCollection = httpCompressionSection.ChildElements.Item("staticTypes").Collection;

var addElement = staticTypesCollection.CreateNewElement("add");
addElement.Properties.Item("mimeType").Value = "application/msword";
addElement.Properties.Item("enabled").Value = true;
staticTypesCollection.AddElement(addElement);

var addElement1 = staticTypesCollection.CreateNewElement("add");
addElement1.Properties.Item("mimeType").Value = "application/vnd.ms-powerpoint";
addElement1.Properties.Item("enabled").Value = true;
staticTypesCollection.AddElement(addElement1);

var addElement2 = staticTypesCollection.CreateNewElement("add");
addElement2.Properties.Item("mimeType").Value = "application/vnd.ms-excel";
addElement2.Properties.Item("enabled").Value = true;
staticTypesCollection.AddElement(addElement2);

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 staticTypesCollection = httpCompressionSection.ChildElements.Item("staticTypes").Collection

Set addElement = staticTypesCollection.CreateNewElement("add")
addElement.Properties.Item("mimeType").Value = "application/msword"
addElement.Properties.Item("enabled").Value = True
staticTypesCollection.AddElement(addElement)

Set addElement1 = staticTypesCollection.CreateNewElement("add")
addElement1.Properties.Item("mimeType").Value = "application/vnd.ms-powerpoint"
addElement1.Properties.Item("enabled").Value = True
staticTypesCollection.AddElement(addElement1)

Set addElement2 = staticTypesCollection.CreateNewElement("add")
addElement2.Properties.Item("mimeType").Value = "application/vnd.ms-excel"
addElement2.Properties.Item("enabled").Value = True
staticTypesCollection.AddElement(addElement2)

adminManager.CommitChanges()