gpt4 book ai didi

asp.net-core - 如何将 css、js 或图像文件缓存到 asp.net 核心

转载 作者:行者123 更新时间:2023-12-04 10:03:27 25 4
gpt4 key购买 nike

间歇性代理导致我的页面被我部署的 asp.net 核心站点缓存。 Web 服务器没有缓存页面。

我添加了请求和响应缓存以防止此代理导致的任何缓存

在我的 Startup.cs

        app.UseStaticFiles();

app.UseIdentity();

app.Use(async (context, next) =>
{
context.Response.Headers.Append("Cache-Control", "no-cache");
context.Response.Headers.Append("Cache-Control", "private, no-store");
context.Request.Headers.Append("Cache-Control", "no-cache");
context.Request.Headers.Append("Cache-Control", "private, no-store");
await next();
});

我可以在 fiddler 中看到这些没有缓存头被添加到我的页面以及 javascript 文件、css 文件和图像文件中。
  • 我如何限制此无缓存 header 仅适用于 asp.net mvc 页面,以便这些无缓存 header 不会出现在 fiddler 中,用于非页面文件(如 js、css 和图像文件)
  • 对于 css 和 js 文件的 HTTP 请求,有没有一种方法可以不检查每个请求的服务器上是否存在该文件,而仅使用浏览器版本来首次获取这些文件。我问的原因是,在重负载(1000 个用户)时,我在 Fiddler 中注意到我的 css、js 和图像文件的 HTTPGET 出现 404 错误,因此我试图限制对这些资源的请求数量。当请求成功(未加载)时,我得到 304 个响应(未修改)。有没有办法告诉浏览器首先不要发出请求并使用本地缓存版本。
  • 最佳答案

    这是一种应该适合您的方法。本示例将 css 和 js 文件设置为浏览器缓存 7 天,并将非 css、js 和图像设置为没有缓存头。另一个注意事项是,只需要在响应上设置缓存控制 header 是 Asp.NET Core。

            app.Use(async (context, next) =>
    {
    string path = context.Request.Path;

    if(path.EndsWith(".css") || path.EndsWith(".js")) {

    //Set css and js files to be cached for 7 days
    TimeSpan maxAge = new TimeSpan(7, 0, 0, 0); //7 days
    context.Response.Headers.Append("Cache-Control", "max-age="+ maxAge.TotalSeconds.ToString("0"));

    } else if(path.EndsWith(".gif") || path.EndsWith(".jpg") || path.EndsWith(".png")) {
    //custom headers for images goes here if needed

    } else {
    //Request for views fall here.
    context.Response.Headers.Append("Cache-Control", "no-cache");
    context.Response.Headers.Append("Cache-Control", "private, no-store");

    }
    await next();
    });

    关于asp.net-core - 如何将 css、js 或图像文件缓存到 asp.net 核心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37706370/

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