Compresión HTTP <httpCompression>

Información general

El elemento <httpCompression> especifica la configuración de la compresión HTTP para Internet Information Services (IIS) 7. La compresión HTTP puede proporcionar tiempos de transmisión más rápidos entre IIS y exploradores cliente que pueden aceptar archivos comprimidos.

Nota:

Un cliente HTTP debe iniciar la comunicación para el contenido comprimido mediante el envío del encabezado de codificación HTTP Accept adecuado. Si un cliente no tiene capacidad para la compresión HTTP, no se pasará ese encabezado y IIS 7 siempre devolverá contenido sin comprimir.

Hay dos tipos diferentes de compresión que IIS 7 usa:

  • Compresión estática:

    IIS 7 almacena en caché el contenido estático comprimido en la ruta de acceso especificada por el atributo directory, lo que aumenta el rendimiento de la compresión al eliminar la necesidad de volver a comprimir el contenido que ya se ha comprimido. Una vez que IIS 7 ha comprimido un archivo, a las solicitudes subsiguientes se les asigna la copia comprimida del archivo desde el directorio de caché.

    Los atributos staticCompressionEnableCpuUsage y staticCompressionDisableCpuUsage especifican cuándo IIS 7 comprimirá los archivos estáticos en función del uso de CPU.

    Debe usar compresión estática con archivos que normalmente no cambien, como archivos HTML (*.html, *.htm), archivos de texto (*.txt), documentos de Microsoft Office (*.doc, *.xls, *.ppt), etc. El tamaño de estos archivos se puede reducir mediante la compresión, que reduce los tiempos de descarga de las solicitudes de cliente y reduce el ancho de banda en el servidor.

    Nota:

    Los archivos de imagen, como *.jpg y *.png, también son archivos estáticos, pero normalmente no se benefician de la compresión HTTP porque estos archivos de imagen ya están comprimidos.

  • Compresión dinámica:

    A diferencia de la compresión estática, IIS 7 realiza la compresión dinámica cada vez que un cliente solicita el contenido, pero la versión comprimida no se almacena en caché en el disco. Este cambio se realiza debido a la diferencia principal entre el contenido estático y dinámico. El contenido estático no cambia. Sin embargo, el contenido dinámico suele ser contenido creado por una aplicación y, por tanto, cambia a menudo, como contenido de Active Server Pages (ASP) o ASP.NET. Dado que el contenido dinámico cambia a menudo, IIS 7 no lo almacena en caché.

    Los atributos dynamicCompressionEnableCpuUsage y dynamicCompressionDisableCpuUsage especifican cuándo IIS 7 comprimirá los archivos dinámicos en función del uso de CPU.

IIS 7 admite dos esquemas de compresión estándar del sector diferentes:

Cada uno de estos dos esquemas de compresión se puede habilitar mediante el elemento <schemes> del elemento <httpCompression>.

Nota:

Aunque el elemento <httpCompression> especifica la configuración de la compresión HTTP para Internet Information Services (IIS) 7, el elemento <urlCompression> especifica si la compresión está habilitada para un espacio de nombres de dirección URL.

Compatibilidad

Versión Notas
IIS 10.0 El elemento <httpCompression> no se modificó en IIS 10.0.
IIS 8.5 El atributo staticCompressionIgnoreHitFrequency se agregó en IIS 8.5.
IIS 8.0 El elemento <httpCompression> no se modificó en IIS 8.0.
IIS 7.5 En IIS 7.5, se ha cambiado el valor predeterminado del atributo minFileSizeForComp y se ha agregado el atributo dynamicCompressionBufferLimit.
IIS 7.0 El elemento <httpCompression> se introdujo en IIS 7.0.
IIS 6,0 El elemento <httpCompression> reemplaza a las siguientes propiedades de metabase de IIS 6.0:
  • HcCacheControlHeader
  • HcCompressionDirectory
  • HcDoDiskSpaceLimiting
  • HcExpiresHeader
  • HcMaxDiskSpaceUsage
  • HcMinFileSizeForComp
  • HcNoCompressionForHttp10
  • HcNoCompressionForProxies
  • HcNoCompressionForRange
  • HcSendCacheHeaders

Configuración

La compresión HTTP suele estar disponible en la instalación predeterminada de IIS 7 y versiones posteriores. Sin embargo, solo se instala la compresión estática de forma predeterminada. Para instalar la compresión estática o dinámica, siga estos pasos.

Windows Server 2012 o Windows Server 2012 R2

  1. En la barra de tareas, haga clic en Administrador del servidor.
  2. En Administrador del servidor, haga clic en el menú Administrar y, después, haga clic en Agregar roles y características.
  3. En el asistente para Agregar roles y características, haga clic en Siguiente. Seleccione el tipo de instalación y haga clic en Siguiente. Seleccione el servidor de destino y haga clic en Siguiente.
  4. En la página Roles de servidor, expanda Servidor web (IIS), Servidor web, Rendimiento y, a continuación, seleccione Compresión de contenido estático o Compresión de contenido dinámico. Haga clic en Next.
    Screenshot of Web Server and Performance node with Static Content Compression selected and Dynamic Content Compression highlighted..
  5. En la página Seleccionar características, haz clic en Siguiente.
  6. En la página Confirmar selecciones de instalación, haga clic en Instalar.
  7. En la página Resultados , haga clic en Cerrar.

Windows 8 o Windows 8.1

  1. En la pantalla Inicio, mueva el puntero hasta la esquina inferior izquierda, haga clic con el botón derecho en el botón Inicio y, a continuación, haga clic en Panel de control.
  2. En Panel de control, haga clic en Programas y características y después en Activar o desactivar las características de Windows.
  3. Expanda sucesivamente Internet Information Services, World Wide Web Services, Características de rendimiento y, a continuación, seleccione Compresión de contenido dinámico o Compresión de contenido estático.
    Screenshot of World Wide Web and Performance Features pane expanded showing Dynamic Content Compression and Static Content Compression selected.
  4. Haga clic en OK.
  5. Haga clic en Cerrar.

Windows Server 2008 o Windows Server 2008 R2

  1. En la barra de tareas, haga clic en Inicio, seleccione Herramientas administrativas y, luego, haga clic en Administrador del servidor.
  2. En el panel de jerarquía del Administrador del servidor, expanda Roles y, luego, haga clic en Servidor web (IIS).
  3. En el panel Servidor web (IIS), desplácese hasta la sección Servicios de rol y, luego, haga clic en Agregar servicios de rol.
  4. En la página Seleccionar servicios de rol del Asistente para agregar servicios de rol, seleccione Compresiónde contenido dinámico si desea instalar compresión dinámica y Compresión de contenido estático si desea instalar la compresión estática y, a continuación, haga clic en Siguiente.
    Screenshot of Performance node expanded in Add Role Services page with Dynamic Content Compression highlighted.
  5. En la página Confirmar selecciones de instalación, haz clic en Instalar.
  6. En la página Resultados , haga clic en Cerrar.

Windows Vista o Windows 7

  1. En la barra de tareas, haga clic en Inicio y, luego, haga clic en Panel de control.
  2. En Panel de control, haga clic en Programas y características y después en Activar o desactivar las características de Windows.
  3. Expanda Internet Information Services, después World Wide Web Services y, a continuación Características de rendimiento.
  4. Seleccione Compresión HTTP dinámica si desea instalar la compresión dinámica y Compresión de contenido estático si desea instalar la compresión estática.
    Screenshot of Performance Features node expanded and H T T P Compression Dynamic selected.
  5. Haga clic en OK.

Procedimientos

Habilitación o deshabilitación de la compresión estática y dinámica para un sitio o aplicación

  1. Abra el Administrador de Internet Information Services (IIS):

    • Si usa Windows Server 2012 o Windows Server 2012 R2:

      • En la barra de tareas, haga clic en Administrador del servidor, en Herramientas y, a continuación, en Administrador de Internet Information Services (IIS).
    • Si usa Windows 8 o Windows 8.1:

      • Mantenga presionada la tecla Windows, presione la letra X y haga clic en Panel de control.
      • En Panel de control, haga clic en Herramientas administrativas y, a continuación, haga doble clic en Administrador de Internet Information Services (IIS).
    • Si usa Windows Server 2008 o Windows Server 2008 R2:

      • En la barra de tareas, haga clic en Inicio, seleccione Herramientas administrativas y, a continuación, haga clic en Administrador de Internet Information Services (IIS).
    • Si usa Windows Vista o Windows 7:

      • En la barra de tareas, haga clic en Inicio y, luego, haga clic en Panel de control.
      • Haga doble clic en Herramientas administrativas y, a continuación, haga doble clic en Administrador de Internet Information Services (IIS).
  2. En el panel Conexiones, vaya a la conexión, sitio, aplicación o directorio para los que desea habilitar la compresión.

  3. En el panel Inicio, haga doble clic en Compresión.
    Screenshot of Default Web Site Home page showing Compression selected.

  4. En el panel Compresión, active las casillas para habilitar la compresión estática o dinámica, o quite las marcas de verificación para deshabilitarlas.
    Screenshot shows Compression pane with Enable dynamic content compression and Enable static content compression boxes both selected.

  5. Una vez completados los pasos anteriores, haga clic en Aplicar en el panel Acciones.

Habilitación o deshabilitación de la compresión estática y dinámica para un servidor

  1. Abra el Administrador de Internet Information Services (IIS):

    • Si usa Windows Server 2012 o Windows Server 2012 R2:

      • En la barra de tareas, haga clic en Administrador del servidor, en Herramientas y, a continuación, en Administrador de Internet Information Services (IIS).
    • Si usa Windows 8 o Windows 8.1:

      • Mantenga presionada la tecla Windows, presione la letra X y haga clic en Panel de control.
      • En Panel de control, haga clic en Herramientas administrativas y, a continuación, haga doble clic en Administrador de Internet Information Services (IIS).
    • Si usa Windows Server 2008 o Windows Server 2008 R2:

      • En la barra de tareas, haga clic en Inicio, seleccione Herramientas administrativas y, a continuación, haga clic en Administrador de Internet Information Services (IIS).
    • Si usa Windows Vista o Windows 7:

      • En la barra de tareas, haga clic en Inicio y, luego, haga clic en Panel de control.
      • Haga doble clic en Herramientas administrativas y, a continuación, haga doble clic en Administrador de Internet Information Services (IIS).
  2. En el panel Conexiones, resalte el nombre de su servidor.

  3. En el panel Inicio del servidor, haga doble clic en Compresión.
    Screenshot shows servers Home pane with Compression highlighted.

  4. En el panel Compresión, active las casillas para habilitar la compresión estática o dinámica, o quite las marcas de verificación para deshabilitarlas.
    Screenshot of Compression page showing both boxes for Enable dynamic content compression and Enable static content compression selected.

  5. Una vez completados los pasos anteriores, haga clic en Aplicar en el panel Acciones.

Configuración de staticCompressionIgnoreHitFrequency

  1. Abra el Administrador de Internet Information Services (IIS):

    • Si usa Windows Server 2012 R2:

      • En la barra de tareas, haga clic en Administrador del servidor, en Herramientas y, a continuación, en Administrador de Internet Information Services (IIS).
    • Si usa Windows Server 8.1:

      • Mantenga presionada la tecla Windows, presione la letra X y haga clic en Panel de control.
      • En Panel de control, haga clic en Herramientas administrativas y, a continuación, haga doble clic en Administrador de Internet Information Services (IIS).
  2. En el panel Conexiones, seleccione el servidor y, a continuación, haga doble clic en Editor de configuración.

  3. En el Editor de configuración, en la sección, seleccione system.webServer y, a continuación, seleccione httpCompression.

  4. En staticCompressionIgnoreHitFrequency, escriba True para deshabilitar el comportamiento de que un archivo estático se comprima solo si se accede a él un número determinado de veces dentro de un período de tiempo o escriba False para habilitar el comportamiento.
    Screenshot shows Configuration Editor page with True entered for static Compression Ignore Hit Frequency option.

  5. En el panel Acciones, haga clic en Aplicar.

Configuración

Atributos

Atributo Descripción
cacheControlHeader Atributo de cadena opcional.

Especifica la directiva que IIS agrega al encabezado Cache-Control que invalida el encabezado HTTP Expires. Este atributo garantiza que los clientes y servidores proxy antiguos no intenten almacenar en caché los archivos comprimidos. Para habilitar esta configuración, debe establecer el atributo sendCacheHeaders en true. El servicio WWW debe reiniciarse para que los cambios en esta propiedad surtan efecto.

El valor predeterminado es max-age=86400.
directory Atributo de cadena opcional.

Especifica el directorio donde se van a guardar temporalmente y almacenar en caché las versiones comprimidas de los archivos estáticos.

Nota: En IIS 6.0, la ruta de acceso al directorio predeterminada para los archivos comprimidos temporales de IIS era %windir%\IIS Temporary Compressed Files.

El valor predeterminado es %SystemDrive%\inetpub\temp\IIS Temporary Compressed Files.
doDiskSpaceLimiting Atributo Boolean opcional.

Especifica si existe un límite para la cantidad de espacio en disco que pueden ocupar todos los archivos comprimidos, que se almacenan en el directorio de compresión especificado por el atributo directory.

El valor predeterminado es true.
dynamicCompressionBufferLimit Atributo uint opcional.

Especifica la cantidad máxima de datos comprimidos dinámicamente que IIS almacenará en búfer antes de vaciar el búfer en un cliente. Esto reduce la cantidad de memoria necesaria para realizar la compresión dinámica.

Nota: Este atributo se agregó en IIS 7.5.

El valor predeterminado es 65536.
dynamicCompressionDisableCpuUsage Atributo uint opcional.

Especifica el porcentaje de uso de CPU con el que se deshabilitará la compresión dinámica.

Nota: Este atributo actúa como límite superior de CPU con el que se desactiva la compresión dinámica. Cuando el uso de CPU está por debajo del valor especificado en el atributo dynamicCompressionEnableCpuUsage, se volverá a habilitar la compresión dinámica.

El valor predeterminado es 90.
dynamicCompressionEnableCpuUsage Atributo uint opcional.

Especifica el porcentaje de uso de CPU por debajo del cual se habilitará la compresión dinámica. El valor debe estar entre 0 y 100. El uso medio de CPU se calcula cada 30 segundos.

Nota: Este atributo actúa como límite inferior de CPU por debajo del cual se activa la compresión dinámica. Cuando el uso de CPU aumenta por encima del valor especificado en el atributo dynamicCompressionDisableCpuUsage, se deshabilita la compresión dinámica.

El valor predeterminado es 50.
expiresHeader Atributo de cadena opcional.

Especifica el contenido del encabezado HTTP Expires que se envía con todos los archivos comprimidos solicitados, junto con el encabezado Cache-Control especificado en el atributo cacheControlHeader. Esta combinación de encabezados garantiza que los clientes y servidores proxy antiguos no intenten almacenar en caché archivos comprimidos. Para habilitar esta configuración, debe establecer el atributo sendCacheHeaders en true. El servicio de publicación World Wide Web (servicio WWW) debe reiniciarse para que los cambios en esta propiedad surtan efecto.

El valor predeterminado es Wed, 01 Jan 1997 12:00:00 GMT.
maxDiskSpaceUsage Atributo uint opcional.

Especifica el número de megabytes de espacio en disco que pueden ocupar los archivos comprimidos en el directorio de compresión. Cuando el espacio usado por archivos comprimidos supera el 90 % del valor de este atributo, IIS elimina los archivos menos usados recientemente hasta que se alcanza un nivel de uso del 90 %.

Nota: En IIS 6.0, este límite se expresó en bytes; en IIS 7, se expresa en megabytes. En IIS 7, el límite se aplica por grupo de aplicaciones.

El valor predeterminado es 100.
minFileSizeForComp Atributo uint opcional.

Especifica el número mínimo de kilobytes que debe contener un archivo para poder usar la compresión a petición.

El valor predeterminado en IIS 7.5 es 2700; en IIS 7.0, el valor predeterminado era 256.
noCompressionForHttp10 Atributo Boolean opcional.

Especifica si la compresión está deshabilitada para las solicitudes que contienen un número de versión HTTP 1.0.

Nota: Algunos clientes HTTP 1.0 no controlan correctamente el almacenamiento en caché de objetos comprimidos. Puede usar esta configuración para evitar devolver un archivo comprimido a un cliente que no pueda descomprimirlo.

El valor predeterminado es true.
noCompressionForProxies Atributo Boolean opcional.

Especifica si la respuesta HTTP 1.1 está deshabilitada para las solicitudes de compresión que llegan a través de servidores proxy.

Nota: Algunos servidores proxy HTTP no controlan correctamente el almacenamiento en caché de objetos comprimidos. Puede usar esta configuración para evitar devolver un archivo comprimido a un servidor proxy que no pueda descomprimirlo.

El valor predeterminado es true.
noCompressionForRange Atributo Boolean opcional.

Especifica si la compresión está deshabilitada para las solicitudes HTTP que incluyen el encabezado Range.

Nota: Algunos clientes no pueden controlar correctamente las solicitudes de intervalo. Puede usar esta configuración para evitar devolver un archivo comprimido a un cliente que no pueda descomprimirlo.

El valor predeterminado es true.
sendCacheHeaders Atributo Boolean opcional.

Especifica si los encabezados configurados en cacheControlHeader y expiresHeader se envían con cada respuesta comprimida.

El valor predeterminado es false.
staticCompressionDisableCpuUsage Atributo uint opcional.

Especifica el porcentaje de uso de CPU con el que se deshabilita la compresión estática. El valor debe estar entre 0 y 100. El uso medio de CPU se calcula cada 30 segundos.

Nota: Esta propiedad actúa como límite superior de CPU con el que se desactiva la compresión estática. Cuando el uso de CPU está por debajo del valor especificado en el atributo staticCompressionEnableCpuUsage, se volverá a habilitar la compresión estática.

El valor predeterminado es 100.
staticCompressionEnableCpuUsage Atributo uint opcional.

Especifica el porcentaje de uso de CPU con el que se habilita la compresión estática. El valor debe estar entre 0 y 100. El uso medio de CPU se calcula cada 30 segundos.

Nota: Esta propiedad actúa como límite inferior de CPU por debajo del cual se activa la compresión estática. Cuando el uso de CPU aumenta por encima del valor especificado en el atributo staticCompressionDisableCpuUsage, se deshabilitará la compresión estática.

El valor predeterminado es 50.
staticCompressionIgnoreHitFrequency Atributo Boolean opcional.

Si es True, se deshabilita el comportamiento de que un archivo estático se comprima solo si se accede a él un número determinado de veces dentro de un período de tiempo. Es posible que se encuentre con casos en los que desea que el contenido estático siempre se comprima para reducir el uso del ancho de banda. Por ejemplo, es posible que quiera comprimir siempre el contenido estático cuando un sistema emplea un equilibrador de carga con almacenamiento en caché perimetral entre un servidor web y el solicitante, lo que hace que un archivo sin comprimir se almacene en caché en el servidor perimetral porque las solicitudes subsiguientes no llegarían al servidor web.

Si el comportamiento no está deshabilitado, una tasa de accesos mayor o igual que dos accesos en 10 segundos dará como resultado la compresión del contenido estático. Una tasa de accesos menor provocaría que el contenido no se comprimiera.

El valor predeterminado es False.

Elementos secundarios

Elemento Descripción
scheme Elemento opcional.

Especifica el esquema de compresión (Gzip o Deflate) que IIS usa para comprimir las solicitudes de cliente.
dynamicTypes Elemento opcional.

Especifica los valores de configuración de la compresión dinámica.
staticTypes Elemento opcional.

Especifica los valores de configuración de la compresión estática.

Ejemplo de configuración

El siguiente elemento predeterminado <httpCompression> está configurado en el archivo ApplicationHost.config en IIS 7. Esta sección de configuración hereda las opciones de configuración predeterminadas a menos que use el elemento <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>

Código de ejemplo

Los ejemplos de código siguientes agregarán los tipos MIME para documentos de Office 2003 a la lista de tipos de compresión dinámica.

Nota:

Los documentos de Office 2007 usan compresión integrada, por lo que no hace falta que IIS los comprima.

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

Nota:

Debe asegurarse de establecer el parámetro de confirmación en apphost cuando use AppCmd.exe para configurar estas opciones. Esto confirma los valores de configuración en la sección de ubicación adecuada del archivo 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()

Los ejemplos de código siguientes agregarán los tipos MIME para documentos de Office 2003 a la lista de tipos de compresión estática.

(> [NOTA]

Los documentos de Office 2007 usan compresión integrada, por lo que no es necesario comprimirlos mediante 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

Nota:

Debe asegurarse de establecer el parámetro de confirmación en apphost cuando use AppCmd.exe para configurar estas opciones. Esto confirma los valores de configuración en la sección de ubicación adecuada del archivo 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()