Compartir a través de


Esquema <schema>

Información general

El elemento <scheme> del elemento <httpCompression> especifica los siguientes valores para los esquemas de compresión GNU zip (Gzip) y Deflate en Internet Information Services (IIS) 7:

  • Los atributos name y dll, respectivamente, especifican el nombre y el archivo DLL del proveedor de un esquema de compresión. IIS 7 admite los esquemas de compresión Gzip y Deflate, y ambos esquemas de compresión se implementan actualmente en %windir%\system32\inetsrv\gzip.dll.

  • El atributo doStaticCompression especifica si la compresión estática está habilitada para el esquema de compresión especificado por el atributo name. Al establecer doStaticCompression en true, se especifica que el contenido estático se comprimirá cuando lo solicite un cliente. Si la compresión estática está habilitada, cada solicitud de contenido estático que contiene el encabezado "Accept-Encoding: gzip" o "Accept-Encoding: deflate" hace que el contenido se comprima, siempre y cuando el esquema de compresión especificado en el encabezado esté habilitado en IIS. Si la solicitud no contiene este encabezado o el encabezado especifica un esquema de compresión que no está habilitado en IIS, el contenido no se comprime.

    Si IIS determina que la respuesta debe comprimirse, IIS comprueba el directorio de compresión especificado por el atributo directory del elemento <httpCompression>. Si se encuentra una versión comprimida nueva del archivo estático en el directorio, se envía al explorador cliente. Si no se encuentra una versión comprimida nueva del archivo y la compresión a petición está habilitada con el atributo dynamicCompressionBeforeCache del elemento <urlCompression>, IIS envía el archivo solicitado en un formulario sin comprimir y agrega ese archivo a la cola de compresión en segundo plano.

  • El atributo doDynamicCompression especifica si la compresión dinámica está habilitada para el esquema de compresión especificado por el atributo name. Al establecer doDynamicCompression en true, se especifica que el contenido dinámico se comprimirá cuando lo solicite un cliente. Si la compresión dinámica está habilitada, cada solicitud de contenido dinámico que contiene el encabezado "Accept-Encoding: gzip" o "Accept-Encoding: deflate" hace que el contenido se comprima, siempre y cuando el esquema de compresión especificado en el encabezado esté habilitado en IIS. Si la solicitud no contiene este encabezado o el encabezado especifica un esquema de compresión que no está habilitado en IIS, el contenido no se comprime.

    Nota:

    Dado que el contenido dinámico, por definición, cambia siempre, IIS no almacena en caché las versiones comprimidas del contenido dinámico. La compresión dinámica consume considerables recursos de tiempo de CPU y memoria, y solo debe usarse en servidores que tengan conexiones de red lentas y tiempo de CPU disponible.

  • Los atributos dynamicCompressionLevel y staticCompressionLevel especifican los niveles de compresión de los esquemas de compresión cuando IIS comprime, respectivamente, el contenido dinámico o estático. Los niveles de compresión inferiores producen archivos comprimidos ligeramente más grandes, pero con un menor impacto general en los recursos de CPU y memoria. Los niveles de compresión más altos suelen dar lugar a archivos comprimidos más pequeños, pero con un mayor uso de CPU y memoria.

Nota:

De forma predeterminada, solo el esquema de compresión Gzip está disponible en IIS 7. Para habilitar el esquema de compresión Deflate mediante programación, consulte la sección Ejemplos de código de este documento.

Compatibilidad

Versión Notas
IIS 10.0 El elemento <scheme> no se modificó en IIS 10.0.
IIS 8.5 El elemento <scheme> no se modificó en IIS 8.5.
IIS 8.0 El elemento <scheme> no se modificó en IIS 8.0.
IIS 7.5 El elemento <scheme> no se modificó en IIS 7.5.
IIS 7.0 El elemento <scheme> del elemento <httpCompression> se introdujo en IIS 7.0.
IIS 6,0 El elemento <scheme> reemplaza a las siguientes propiedades de metabase de IIS 6.0:
  • HcCompressionDll
  • HcDoDynamicCompression
  • HcDoStaticCompression
  • HcDynamicCompressionLevel

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 Performance pane expanded 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 shows Performance Features pane in Turn Windows features on or off page expanded and Static Content Compression highlighted.
  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 shows Select Role Services page with Performance node expanded and 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 Turn Windows features on or off page showing Performance Features node expanded and H T T P Common Dynamics selected.
  5. Haga clic en OK.

Procedimientos

No hay ninguna interfaz de usuario para establecer el esquema de compresión para IIS 7. Para ver ejemplos de cómo establecer el esquema de compresión mediante programación, consulte la sección Ejemplos de código de este documento.

Configuración

Atributos

Atributo Descripción
dll Atributo de cadena necesario.

Especifica la ruta de acceso completa del sistema de archivos y el nombre de archivo del archivo DLL de compresión asociado al esquema de compresión. El servicio de publicación World Wide Web (servicio WWW) debe reiniciarse para que los cambios en este atributo surtan efecto.
doDynamicCompression Atributo Boolean opcional.

Especifica si se comprimen las respuestas a las solicitudes de contenido dinámico, como los scripts de las extensiones Active Server Pages (ASP) e ISAPI. Si este valor cambia a nivel de esquema de compresión individual, el servicio WWW debe reiniciarse para que el cambio surta efecto.

El valor predeterminado es true.
doStaticCompression Atributo Boolean opcional.

Especifica si IIS comprime las respuestas a las solicitudes de contenido estático. Dado que este atributo no se puede heredar, debe establecerse en true a nivel global (<httpCompression>) y a nivel de esquema individual si el atributo name está establecido en Gzip. Si este valor cambia a nivel de esquema de compresión individual, el servicio WWW debe reiniciarse para que el cambio surta efecto.

Nota: El almacén de compresión estática debe ubicarse en una partición de disco o en un recurso compartido remoto con formato NTFS. Si el almacén de archivos no es NTFS, se deshabilita la compresión estática. Por motivos de seguridad, no se atenderán respuestas comprimidas desde un almacén de caché FAT.

El valor predeterminado es true.
dynamicCompressionLevel Atributo uint opcional.

Especifica el nivel de compresión del esquema de compresión cuando se comprime el contenido dinámico. Los niveles oscilan entre 0 (nivel de compresión más bajo y uso de CPU más bajo) a 10 (nivel de compresión más alto y uso de CPU más alto). El servicio WWW debe reiniciarse para que los cambios en este atributo surtan efecto.

Nota: Dado que la compresión dinámica consume recursos de tiempo de CPU y memoria considerables, úsela solo en servidores que tengan conexiones de red lentas y tiempo de CPU disponible. Las respuestas estáticas comprimidas se pueden almacenar en caché y, por lo tanto, no afectan a los recursos de CPU, como hacen las respuestas dinámicas.

El valor predeterminado es 0.
name Atributo de cadena necesario.

Especifica el nombre del esquema de compresión. Por ejemplo, Gzip o Deflate.
staticCompressionLevel Atributo uint opcional.

Especifica el nivel de compresión del esquema de compresión cuando se comprime contenido estático. Los niveles oscilan entre 0 (nivel de compresión más bajo y uso de CPU más bajo) a 10 (nivel de compresión más alto y uso de CPU más alto). 0 significa que la compresión está deshabilitada. El servicio WWW debe reiniciarse para que los cambios en este atributo surtan efecto.

El valor predeterminado es 7.

Elementos secundarios

Elemento Descripción
remove Elemento opcional.

Quita una referencia a un esquema de compresión HTTP de la colección de esquemas de compresión HTTP.
clear Elemento opcional.

Quita todas las referencias a esquemas de compresión HTTP de la colección de esquemas de compresión HTTP.

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

En los ejemplos de código siguientes se agrega el esquema de compresión Deflate a 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

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 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()