作者:Yanbing Shi
本文概括介绍了 IIS Compression。
什么是 IIS Compression
IIS Compression 是两个 IIS Compression 方案提供程序(iisbrotli.dll 和 iiszlib.dll)的捆绑包,用于扩展 IIS 压缩 HTTP 响应的功能。 iisbrotli.dll 支持 Brotli 压缩,而 iiszlib.dll 同时支持 Gzip 和 Deflate 压缩。
什么是压缩方案提供程序
IIS 压缩方案提供程序:
- 是 IIS
StaticCompressionModule
和DynamicCompressionModule
的可插入扩展。 - 为一个或多个 HTTP 压缩方案提供实现。
IIS StaticCompressionModule
和 DynamicCompressionModule
:
- 将已注册的压缩方案提供程序加载到运行时的工作进程。
- 利用它们分别对静态文件和动态生成的内容执行压缩。
为什么使用 IIS Compression
IIS 提供默认压缩方案提供程序 gzip.dll:
- 它支持 Gzip 和 Deflate 压缩。
- 默认情况下,在 applicationHost.config 中注册为 gzip 方案。
内置 gzip.dll 基于 Gzip 和 Deflate 编码的内部实现,可工作正常。 那么,为什么在 IIS Compression 中引入新的压缩方案提供程序?
使用 Brotli 压缩提高压缩率
Brotli 压缩:
- 是 HTTP 压缩的一个相对较新的补充。
- Brotli 的编码算法和格式是在注释请求 (RFC) 规范 7932 中指定的。
- 使用 Brotli 压缩的响应数据流具有内容编码类型“br”。
- 能够提供比 Gzip 和 Deflate 更高的压缩率,但压缩速度较低。
客户端(浏览器)端的 Brotli 解压缩通常更快。 启用 Brotli 压缩可能会提高性能,尤其是提供静态内容的性能。
更好的 Gzip 压缩方案提供程序
虽然 IIS Compression 中包含的 iiszlib.dll 提供与默认提供程序 gzip.dll 相同的 Gzip 和 Deflate 压缩,但 iiszlib.dll:
- 更新一些。
- 在 CPU 使用方面的性能更好。
- 由于 zlib 库,具有更好的动态压缩支持。
开放源
IIS Compression
:
- 是支持的开源产品。
- 可在 IIS.Compression Github 存储库中找到源代码。
- 将开源 brotli 和 zlib 压缩库用作核心编码器
- 通过实现 IIS HTTP 压缩 API,将
brotli
和zlib
库与 IIS Compression 模块桥接。
使 IIS Compression
开源为社区提供透明度,并允许在未来灵活敏捷地实现增强、错误修复和自定义。 该项目还提供了一个常规参考,用于为社区开发 IIS Compression 方案提供程序。
安装 IIS Compression
安装前
iiszlib.dll 和 iisbrotli.dll 压缩方案提供程序不是 IIS 模块,它们是 IIS StaticCompressionModule
和 DynamicCompressionModule
的扩展。 在运行时,StaticCompressionModule
和 DynamicCompressionModule
加载压缩方案提供程序,并将响应内容数据传递给它们进行压缩。
因此,前提条件是,需要将这两个压缩模块或其中一个安装到 IIS 服务器上。 有关如何安装功能,请参阅 HTTP 压缩。 安装模块后,请确保为所需的 URL 命名空间启用静态和/或动态压缩。 有关如何启用相应类型的压缩,请参阅 URL 压缩。
安装
从以下位置下载 Microsoft IIS Compression 版本:
使用管理员用户权限打开命令提示符。
输入以下内容来停止 WAS 和 W3SVC 服务:
net stop was /y
运行 iiscompression_<architecture>.exe;例如:
msiexec /I iiscompression_x86.msi
msiexec /I iiscompression_amd64.msi
接受最终用户许可协议 (EULA)。
完成安装。
输入以下内容来启动 WAS 和 W3SVC 服务:
net start w3svc
IIS Compression 安装程序将 iisbrotli.dll 和 iiszlib.dll 移到 %ProgramFiles%\IIS\IIS Compression
。
安装程序在 applicationHost.config 中将 iisbrotli.dll 注册为 br (Brotli) 压缩方案提供程序。它还将默认的 gzip 压缩方案提供程序 gzip.dll 替换为 iiszlib.dll。 applicationHost.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>