IIS Compression 概述

作者:Yanbing Shi

本文概括介绍了 IIS Compression。

什么是 IIS Compression

IIS Compression 是两个 IIS Compression 方案提供程序(iisbrotli.dlliiszlib.dll)的捆绑包,用于扩展 IIS 压缩 HTTP 响应的功能。 iisbrotli.dll 支持 Brotli 压缩,而 iiszlib.dll 同时支持 GzipDeflate 压缩。

什么是压缩方案提供程序

IIS 压缩方案提供程序:

  • 是 IIS StaticCompressionModuleDynamicCompressionModule 的可插入扩展。
  • 为一个或多个 HTTP 压缩方案提供实现。

IIS StaticCompressionModuleDynamicCompressionModule

  • 将已注册的压缩方案提供程序加载到运行时的工作进程。
  • 利用它们分别对静态文件和动态生成的内容执行压缩。

为什么使用 IIS Compression

IIS 提供默认压缩方案提供程序 gzip.dll

  • 它支持 GzipDeflate 压缩。
  • 默认情况下,在 applicationHost.config 中注册为 gzip 方案。

内置 gzip.dll 基于 Gzip 和 Deflate 编码的内部实现,可工作正常。 那么,为什么在 IIS Compression 中引入新的压缩方案提供程序?

使用 Brotli 压缩提高压缩率

Brotli 压缩:

  • 是 HTTP 压缩的一个相对较新的补充。
  • Brotli 的编码算法和格式是在注释请求 (RFC) 规范 7932 中指定的。
  • 使用 Brotli 压缩的响应数据流具有内容编码类型“br”。
  • 能够提供比 GzipDeflate 更高的压缩率,但压缩速度较低。

客户端(浏览器)端的 Brotli 解压缩通常更快。 启用 Brotli 压缩可能会提高性能,尤其是提供静态内容的性能。

更好的 Gzip 压缩方案提供程序

虽然 IIS Compression 中包含的 iiszlib.dll 提供与默认提供程序 gzip.dll 相同的 GzipDeflate 压缩,但 iiszlib.dll

  • 更新一些。
  • 在 CPU 使用方面的性能更好。
  • 由于 zlib 库,具有更好的动态压缩支持。

开放源

IIS Compression:

  • 是支持的开源产品。
  • 可在 IIS.Compression Github 存储库中找到源代码。
  • 将开源 brotlizlib 压缩库用作核心编码器
  • 通过实现 IIS HTTP 压缩 API,将 brotlizlib 库与 IIS Compression 模块桥接。

使 IIS Compression 开源为社区提供透明度,并允许在未来灵活敏捷地实现增强、错误修复和自定义。 该项目还提供了一个常规参考,用于为社区开发 IIS Compression 方案提供程序。

安装 IIS Compression

安装前

iiszlib.dlliisbrotli.dll 压缩方案提供程序不是 IIS 模块,它们是 IIS StaticCompressionModuleDynamicCompressionModule 的扩展。 在运行时,StaticCompressionModuleDynamicCompressionModule 加载压缩方案提供程序,并将响应内容数据传递给它们进行压缩。

因此,前提条件是,需要将这两个压缩模块或其中一个安装到 IIS 服务器上。 有关如何安装功能,请参阅 HTTP 压缩。 安装模块后,请确保为所需的 URL 命名空间启用静态和/或动态压缩。 有关如何启用相应类型的压缩,请参阅 URL 压缩

安装

  1. 从以下位置下载 Microsoft IIS Compression 版本:

  2. 使用管理员用户权限打开命令提示符。

  3. 输入以下内容来停止 WASW3SVC 服务:

    net stop was /y
    
  4. 运行 iiscompression_<architecture>.exe;例如:

    msiexec /I iiscompression_x86.msi
    
    msiexec /I iiscompression_amd64.msi
    
  5. 接受最终用户许可协议 (EULA)。

  6. 完成安装。

  7. 输入以下内容来启动 WASW3SVC 服务:

    net start w3svc
    

IIS Compression 安装程序将 iisbrotli.dlliiszlib.dll 移到 %ProgramFiles%\IIS\IIS Compression。 安装程序在 applicationHost.config 中将 iisbrotli.dll 注册为 br (Brotli) 压缩方案提供程序。它还将默认的 gzip 压缩方案提供程序 gzip.dll 替换为 iiszlib.dllapplicationHost.config 中的示例 <httpCompression> 元素如下所示:

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