gpt4 book ai didi

asp.net-mvc - 在 IIS 10 中通过 HTTP/2 推送服务器时如何 GZIP 压缩 CSS 文件

转载 作者:行者123 更新时间:2023-12-04 09:54:08 25 4
gpt4 key购买 nike

我是服务器在 Controller 中将一些 CSS 文件推送到 ASP.NET MVC 站点中,如下所示:

public ActionResult Index()
{
var cssToPush = new[]
{
"/bundle/file1.min.css",
"/bundle/file2.min.css",
};
foreach (var file in cssToPush)
{
Response.PushPromise(file);
}
return View(GetModel());
}

当我这样做时,我在 Chrome 网络选项卡中看到 CSS 文件没有使用 GZIP 压缩,它们使用的是 44KB。

当我跳过服务器推送时,CSS 文件使用 GZIP 压缩,它们使用 14KB。

我的理论是,这是因为服务器不一定知道客户端是否会接受 GZIP 压缩,因此它以未压缩的 Assets 进行响应。但是,我认为这是非常普遍的,必须有一些标准方法可以使用服务器推送的 Assets 启用 GZIP 压缩。我认为在文件系统上手动 GZIP 压缩它们是非标准和繁琐的。

其他信息:
  • 一些新的 Windows Server 实例(我认为是 Windows Server 2016 或 2019)上的 IIS 10。
  • 我正在使用 HTTPS 并在网络选项卡中确认“h2”(即 HTTP/2)。
  • 我确认文件正在网络选项卡的“启动器”列中被服务器推送。
  • 最佳答案

    虽然我不知道您是否仍然遇到此问题,但为我解决的是将 Accept-Encoding header 传递回响应。

    var values = new NameValueCollection();
    values.Add("Accept-Encoding", filterContext.HttpContext.Request.Headers.Get("Accept-Encoding"));
    filterContext.HttpContext.Response.PushPromise("~/wwwroot/dist/push_asset.css", "GET", values);

    关于asp.net-mvc - 在 IIS 10 中通过 HTTP/2 推送服务器时如何 GZIP 压缩 CSS 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61961912/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com