Compartir a través de


Introducción a la compresión de IIS

por Yanbing Shi

Este artículo es una introducción a la compresión de IIS.

Qué es la compresión de IIS

La compresión de IIS es un conjunto de dos proveedores de esquemas de compresión de IIS, iisbrotli.dll y iiszlib.dll, que expanden la capacidad de IIS para comprimir las respuestas HTTP. iisbrotli.dll admite la compresión Brotli, mientras que iiszlib.dll admite Gzip y la compresión Deflate.

Qué es un proveedor de esquemas de compresión

Un proveedor de esquemas de compresión de IIS:

  • Es una extensión conectable de IIS StaticCompressionModule y DynamicCompressionModule.
  • Proporciona una implementación para uno o varios esquemas de compresión HTTP.

IIS StaticCompressionModule y DynamicCompressionModule:

  • Cargan los proveedores de esquemas de compresión registrados en procesos de trabajo en tiempo de ejecución.
  • Se aprovechan para realizar compresión en archivos estáticos y contenido generado de forma dinámica, respectivamente.

Por qué usar la compresión de IIS

IIS incluye un proveedor de esquema de compresión predeterminado gzip.dll:

  • Admite la compresión Gzip y Deflate.
  • Se registra como esquema gzip en applicationHost.config de forma predeterminada.

La gzip.dll integrada se basa en una implementación interna de la codificación Gzip y Deflate, y funciona correctamente. ¿Por qué introducir nuevos proveedores de esquemas de compresión en la compresión de IIS?

Mayor razón de compresión con compresión Brotli

Compresión Brotli:

  • Es un añadido relativamente nuevo a la compresión HTTP.
  • El algoritmo de codificación y el formato de Brotli se especifican en especificación 7932 de solicitudes de comentario (RFC).
  • Los flujos de datos de respuesta comprimidos con Brotli tienen el tipo de codificación de contenido "br".
  • Es capaz de ofrecer una razón de compresión mayor que Gzip y Deflate, a cambio de una menor velocidad de compresión.

La descompresión de Brotli en el lado cliente (explorador) es generalmente más rápida. Habilitar la compresión brotli puede mejorar potencialmente el rendimiento, especialmente para servir contenido estático.

Mejor proveedor de esquemas de compresión Gzip

Aunque iiszlib.dll incluido en la compresión de IIS ofrece la misma compresión Gzip y Deflate que el proveedor predeterminado gzip.dll, iiszlib.dll:

  • está más actualizado.
  • Tiene un mejor rendimiento en términos de uso de CPU.
  • Tiene una mejor compatibilidad con la compresión dinámica gracias a la biblioteca zlib.

Código abierto

IIS Compression:

  • Es un producto de código abierto compatible.
  • El código fuente se puede encontrar en el repositorio de Github IIS.Compresión.
  • Usa las bibliotecas de compresión brotli y zlib de código abierto como codificadores principales
  • Conecta las bibliotecas brotli y zlib con módulos de compresión de IIS mediante la implementación de API de compresión HTTP de IIS.

Hacer que IIS Compression sea código abierto proporciona transparencia a la comunidad y permite mejoras futuras flexibles y ágiles, corrección de errores y personalización. El proyecto también sirve una referencia general para desarrollar un proveedor de esquemas de compresión IIS a la comunidad.

Instalar la compresión de IIS

Antes de la instalación

Los proveedores de esquemas de compresión iiszlib.dll y iisbrotli.dll no son módulos IIS, son extensiones de IIS StaticCompressionModule y DynamicCompressionModule. En tiempo de ejecución, StaticCompressionModule y DynamicCompressionModule carga los proveedores de esquemas de compresión y pasar los datos de contenido de respuesta a ellos para la compresión.

Por lo tanto, uno o ambos módulos de compresión deben instalarse en el servidor IIS como requisito previo. Consulte Compresión HTTP sobre cómo instalar las funciones. Una vez instalados los módulos, asegúrese de que la compresión estática o dinámica esté habilitada para un espacio de nombres de dirección URL deseado. Consulte Compresión de direcciones URL sobre cómo habilitar el tipo de compresión correspondiente.

Instalación

  1. Descargue la versión de Microsoft IIS Compression desde las siguientes ubicaciones:

    • Compresión de Microsoft IIS (x86) aquí.

    • Compresión de Microsoft IIS (x64) aquí.

  2. Abra un símbolo del sistema con derechos de usuario de administrador.

  3. Detenga los servicios de WAS y W3SVC introduciendo lo siguiente:

    net stop was /y
    
  4. Ejecute iiscompression_<architecture>.exe; por ejemplo:

    msiexec /I iiscompression_x86.msi
    
    msiexec /I iiscompression_amd64.msi
    
  5. Acepte el contrato de licencia de usuario final (CLUF).

  6. Finalice la instalación.

  7. Arranque los servicios de WAS y W3SVC introduciendo lo siguiente:

    net start w3svc
    

El instalador de compresión de IIS coloca iisbrotli.dll y iiszlib.dll en %ProgramFiles%\IIS\IIS Compression. El instalador registra iisbrotli.dll como proveedor de esquemas de compresión de br (Brotli) en applicationHost.config. También reemplaza el proveedor de esquemas de compresión de gzip predeterminado gzip.dll por iiszlib.dll. A continuación se muestra un elemento <httpCompression> de ejemplo en applicationHost.config:

<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files">
    <scheme name="br" dll="%ProgramFiles%\IIS\IIS Compression\iisbrotli.dll" />
    <scheme name="gzip" dll="%ProgramFiles%\IIS\IIS Compression\iiszlib.dll" />
    <dynamicTypes>
        <add mimeType="text/*" enabled="true" />
        <add mimeType="message/*" enabled="true" />
        <add mimeType="application/x-javascript" 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="application/atom+xml" enabled="true" />
        <add mimeType="application/xaml+xml" enabled="true" />
        <add mimeType="image/svg+xml" enabled="true" />
        <add mimeType="*/*" enabled="false" />
    </staticTypes>
</httpCompression>