asp.net 核心 2.2 brotli 压缩无法在 IIS 上运行?

asp.net core 2.2 brotli compression not working on IIS?

我阅读了 Asp.Net Core 2.2 文档,brotli compression is added to 2.2

我的 Startup.cs 中有 app.UseResponseCompression();services.AddResponseCompression();,但是当我使用最新的 Chrome 浏览器在我的系统上尝试时,我在响应时只看到 gzip 压缩 headers。我在 Windows Server 2012 IIS Web 服务器上托管我的 Asp.Net Core 2.2 应用程序。

我应该配置什么才能使 brotli 压缩正常工作?

如果您在 IIS 中托管,则意味着 IIS 是与浏览器通信的网络服务器。它位于您的 ASP.NET 核心应用程序前面并代理所有请求和响应,但默认情况下不支持 Brotli。

您需要使用 IIS 配置响应压缩。有一个扩展可用于添加 Brotli 和 Zlib 支持:https://docs.microsoft.com/en-us/iis/extensions/iis-compression/iis-compression-overview

您还可以 运行 您的 ASP.NET 没有 IIS 的核心应用程序。

您提到您的应用程序托管在 IIS 中,它在您附加的 link 中说

Use Response Compression Middleware when you're unable to use IIS Dynamic Compression Module

因此,如果您使用 IIS,则可以删除该中间件并使用开箱即用的 IIS 压缩模块。

您需要采取的步骤是:

  1. 在您的网络服务器上安装 brotli - 只需按照此处的说明进行操作 https://docs.microsoft.com/en-us/iis/extensions/iis-compression/iis-compression-overview#installing-iis-compression%5D
  2. 删除压缩中间件
  3. 在你的 applicationHost.conf 上确保 brotli 存在于 gzip
  4. 注释掉applicationHost.conf中的gzip选项,因为98%的浏览器都支持brotli压缩,在旧版本的IIS中选择gzip而不是brotli 因为 Request Header 中的顺序(例如 gzip deflate br)。