HTTP 压缩 <httpCompression>

概述

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

注释

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

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

  • 静态压缩

    IIS 7 缓存 由目录 属性指定的路径中的压缩静态内容,这样就无需重新压缩已压缩的内容,从而提高压缩性能。 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 staticCompressionIgnoreHitFrequency 属性已添加到 IIS 8.5 中。
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

安装

HTTP 压缩通常在 IIS 7 及更高版本的默认安装中可用。 但是,默认情况下仅安装静态压缩。 若要安装静态或动态压缩,请使用以下步骤。

Windows Server 2012 或 Windows Server 2012 R2

  1. 在任务栏上,单击 “服务器管理器”。
  2. 服务器管理器中,单击“ 管理 ”菜单,然后单击“ 添加角色和功能”。
  3. “添加角色和功能 ”向导中,单击“ 下一步”。 选择安装类型,然后单击“ 下一步”。 选择目标服务器,然后单击“ 下一步”。
  4. “服务器角色 ”页上,展开 “Web 服务器”(IIS),展开 “Web 服务器”,展开 “性能”,然后选择 “静态内容压缩 ”和/或 “动态内容压缩”。 单击 “下一步”
    Web 服务器和性能节点的屏幕截图,其中选择了“静态内容压缩”,并突出显示了“动态内容压缩”。 .
  5. “选择功能 ”页上,单击“ 下一步”。
  6. “确认安装选择 ”页上,单击“ 安装”。
  7. “结果 ”页上,单击“ 关闭”。

Windows 8 或 Windows 8.1

  1. “开始” 屏幕上,将指针一直移动到左下角,右键单击 “开始 ”按钮,然后单击 “控制面板”。
  2. 控制面板中,单击“ 程序和功能”,然后单击“ 打开或关闭 Windows 功能”。
  3. 展开 Internet Information Services,展开 万维网服务,展开 性能功能,然后选择 “动态内容压缩 ”和/或 “静态内容压缩”。
    已展开的“万维网和性能功能”窗格的屏幕截图,其中选择了“动态内容压缩”和“静态内容压缩”。
  4. 单击“确定”。
  5. 单击 关闭

Windows Server 2008 或 Windows Server 2008 R2

  1. 在任务栏上,单击“ 开始”,指向 管理工具,然后单击 “服务器管理器”。
  2. “服务器管理器层次结构”窗格中,展开“角色”,然后单击“Web 服务器”(IIS)。
  3. Web 服务器(IIS) 窗格中,滚动到 “角色服务 ”部分,然后单击“ 添加角色服务”。
  4. “添加角色服务向导”的“选择角色服务”页上,如果要安装动态压缩和静态内容压缩,请选择“动态内容压缩”,然后单击“下一步”。
    “添加角色服务”页中展开的性能节点的屏幕截图,其中突出显示了“动态内容压缩”。
  5. 在“ 确认安装选择 ”页上,单击“ 安装”。
  6. “结果 ”页上,单击“ 关闭”。

Windows Vista 或 Windows 7

  1. 在任务栏上,单击“ 开始”,然后单击“ 控制面板”。
  2. 控制面板中,单击“ 程序和功能”,然后单击“ 打开或关闭 Windows 功能”。
  3. 展开 Internet 信息服务,然后展开 万维网服务,再展开 性能功能
  4. 如果要安装动态压缩,请选择 “Http 压缩动态 ”,如果要安装 静态压缩,请选择“静态内容压缩 ”。
    “性能功能”节点已展开的屏幕截图,并选择了“H T T P 压缩动态”。
  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 Information Services”(IIS)管理器
    • 如果使用 Windows Server 2008 或 Windows Server 2008 R2:

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

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

  3. “开始 ”窗格中,双击“ 压缩”。
    显示已选择“压缩”的默认网站主页的屏幕截图。

  4. “压缩 ”窗格中,选中启用静态或动态压缩的复选框,或删除复选标记以禁用静态或动态压缩。
    屏幕截图显示了“压缩”窗格,其中“启用动态内容压缩”和“启用静态内容压缩”框均处于选中状态。

  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 Information Services”(IIS)管理器
    • 如果使用 Windows Server 2008 或 Windows Server 2008 R2:

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

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

  3. 在服务器的 “主页 ”窗格中,双击“ 压缩”。
    屏幕截图显示了“服务器主页”窗格,其中突出显示了“压缩”。

  4. “压缩 ”窗格中,选中启用静态或动态压缩的复选框,或删除复选标记以禁用静态或动态压缩。
    “压缩”页的屏幕截图,其中显示了“启用动态内容压缩”和“启用静态内容压缩”的两个框。

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

如何配置 staticCompressionIgnoreHitFrequency

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

    • 如果使用 Windows Server 2012 R2:

      • 在任务栏上,依次单击 “服务器管理器”、“ 工具”和“ Internet Information Services”(IIS)管理器
    • 如果使用 Windows 8.1:

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

  3. 配置编辑器中,选择 system.webServer,然后选择 httpCompression

  4. 对于 staticCompressionIgnoreHitFrequency,请输入 True 以禁用仅当静态文件在一段时间内达到特定次数或输入 False 以启用该行为时才会压缩该行为。
    屏幕截图显示了“配置编辑器”页,其中为“为静态压缩忽略命中频率”选项输入了 True。

  5. In the Actions pane, click Apply.

配置

特性

只能在服务器级别配置这些属性。 将忽略站点级别或更低级别的配置。

特征 说明
cacheControlHeader 可选字符串属性。

指定 IIS 添加到替代 HTTP Expires 标头的 Cache-Control 标头的指令。 此属性可确保较旧的客户端和代理服务器不会尝试缓存压缩的文件。 若要启用此设置,必须将 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 之间。 平均 CPU 使用率每 30 秒计算一次。

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

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

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

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

指定压缩文件可以在压缩目录中占用的兆字节磁盘空间数。 当压缩文件使用的空间超过此属性中的值 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 之间。 平均 CPU 使用率每 30 秒计算一次。

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

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

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

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

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

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

如果未禁用该行为,则 10 秒内命中率大于或等于两次命中将导致静态内容的压缩。 命中率较低将导致内容未压缩。

默认值是 False

子元素

元素 说明
scheme 可选元素。

指定压缩方案 (Gzip 或 Deflate) IIS 用于压缩客户端请求。 此元素只能在服务器级别配置。
dynamicTypes 可选元素。

指定动态压缩的配置设置。 对于 IIS 10.0 之前的 IIS 版本,只能在服务器级别配置。 对于 IIS 10.0 及更高版本,也可以在站点级别配置。
staticTypes 可选元素。

指定静态压缩的配置设置。 对于 IIS 10.0 及更高版本,只能在站点级别配置。 对于 IIS 10.0 之前的 IIS 版本,只能在服务器级别配置。 对于 IIS 10.0 及更高版本,也可以在站点级别配置。

配置示例

在 IIS 7 的 ApplicationHost.config 文件中配置了以下默认 <httpCompression> 元素。 除非使用 <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 配置这些设置时,必须确保将 提交 参数 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 类型添加到静态压缩类型列表中。

([> !注意]

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 配置这些设置时,必须确保将 提交 参数 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()