【问题标题】:asp.net core 2.2 brotli compression not working on IIS?asp.net core 2.2 brotli 压缩在 IIS 上不起作用?
【发布时间】:2019-05-21 06:38:57
【问题描述】:

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

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

我应该如何配置才能使用 brotli 压缩?

【问题讨论】:

    标签: asp.net-core compression brotli


    【解决方案1】:

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

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

    您也可以在没有 IIS 的情况下运行 ASP.NET Core 应用程序。

    【讨论】:

    • 哦,我找到了确切的网址:iis.net/downloads/community/2016/03/iis-brotli 谢谢!
    • 我会注意到 OP 尝试的方法是可能的,尽管不推荐。这只是您是否要依赖在应用程序中运行的压缩中间件而不是作为服务器模块运行的压缩的选择(这个建议)。话虽如此,文档 OP 链接到建议使用服务器模块方法来提高性能。服务器模块方法的第二个好处是它倾向于为缓存静态内容的压缩响应提供开箱即用的支持。
    • 经过测试,我会注意到服务器模块方法的第三个好处是它是交钥匙的。
    【解决方案2】:

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

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

    因此,如果您使用 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)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-16
      • 1970-01-01
      • 2011-04-14
      • 1970-01-01
      • 2019-12-26
      • 1970-01-01
      • 1970-01-01
      • 2017-12-27
      相关资源
      最近更新 更多