Asp.net core asp.net core 2.2 brotli压缩在IIS上不工作?

Asp.net core asp.net core 2.2 brotli压缩在IIS上不工作?,asp.net-core,compression,brotli,Asp.net Core,Compression,Brotli,我阅读了Asp.NETCore2.2文档 我有app.UseResponseCompression()和服务。AddResponseCompression()在我的Startup.cs中,但当我在我的系统上用最新的Chrome浏览器试用它时,我在响应头上只看到gzip压缩。我在Windows Server 2012 IIS web服务器上托管我的Asp.Net Core 2.2应用程序 我应该配置什么才能使brotli压缩正常工作 如果您在IIS中托管,则表示IIS是与浏览器通信的Web服务器。

我阅读了Asp.NETCore2.2文档

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

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


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

您需要使用IIS配置响应压缩。有一个扩展可用于添加Brotli和Zlib支持:


您也可以在不使用IIS的情况下运行ASP.NET核心应用程序。

您提到您的应用程序托管在IIS中,并且在您附加的链接中注明

无法使用IIS时,请使用响应压缩中间件 动态压缩模块

因此,如果您使用IIS,您可以删除该中间件并使用现成的IIS压缩模块

您需要采取的步骤包括:

  • 在您的Web服务器上安装brotli-只需按照此处的说明进行操作
  • 移除压缩中间件
  • 在applicationHost.conf上,确保
    brotli
    存在于
    gzip
  • 注释掉
    applicationHost.conf
    中的
    gzip
    选项,因为98%的浏览器支持
    brotli
    压缩,并且在旧版本的IIS中,由于
    请求头中的顺序(例如
    gzip deflate br
    )选择了
    gzip
    而不是
    brotli

  • 哦,我找到了准确的网址:谢谢!我会注意到这种方法是可能的,尽管不推荐。这只是选择是否要依赖于在应用程序中运行的压缩中间件,而不是作为服务器模块运行的压缩(此建议)。话虽如此,OP链接到的文档建议使用服务器模块方法来提高性能。服务器模块方法的第二个好处是,它倾向于为静态内容缓存压缩响应提供开箱即用的支持。经过测试,我将注意到服务器模块方法的第三个好处是它是万能的。