相关疑难解决方法(0)

如何在ASP.NET核心rc2中禁用浏览器缓存?

我尝试过这个中间件,但浏览器仍在保存文件.

我希望用户将始终获得js和css文件的最新版本.

public void Configure(IApplicationBuilder app)
{
    app.UseSession();
    app.UseDefaultFiles();
    app.UseStaticFiles(new StaticFileOptions
    {
        OnPrepareResponse = context =>
            context.Context.Response.Headers.Add("Cache-Control", "no-cache")
    });
}
Run Code Online (Sandbox Code Playgroud)

asp.net asp.net-core-mvc

23
推荐指数
3
解决办法
2万
查看次数

StaticFileOptions.OnPrepareResponse 从未调用 ASP.NET Core SPA Web 应用程序

我创建了一个在 ASP.NET Core 5.0 上运行的基于 React 的 SPA,但最近在将重大更改推送到生产环境后遇到了问题 - 用户在尝试访问该网站时经常会看到错误,因为他们的浏览器正在加载过时的内​​容与对后端所做的更改不兼容的 SPA 版本。

调查

深入研究这一点,问题似乎是index.html缓存的时间超过了应有的时间,并且根据我在这些帖子中读到的内容,我应该将其配置为永远不会被缓存:

我在这里的帖子中遇到了一个与我有类似问题的人,并遵循这个解决方案。经过更多挖掘后,我还在这个 Github 线程中发现了该解决方案的更全面版本,并且我当前的尝试基于此。

类似的问题

我发现这篇文章与我的类似:StaticFileOptions.OnPrepareResponse does not get call for index.html。不同之处在于,他们的回调除了他们感兴趣的路径之外的所有内容都被命中,而我的回调根本没有被命中。

当前的解决方案尝试

在我的应用程序中,我将Startup.Configure方法更改为:

public void Configure(IApplicationBuilder app)
{
    app.UseStaticFiles();

    app.UseSpaStaticFiles(new StaticFileOptions
    {
        OnPrepareResponse = ctx =>
        {
            if (ctx.Context.Request.Path.StartsWithSegments("/static"))
            {
                // Cache all static resources for 1 year (versioned filenames)
                var headers = ctx.Context.Response.GetTypedHeaders();
                headers.CacheControl = new CacheControlHeaderValue …
Run Code Online (Sandbox Code Playgroud)

c# caching asp.net-core asp-net-core-spa-services

7
推荐指数
1
解决办法
1661
查看次数