【问题标题】:ASP NET Core - clear ResponseCache programmaticallyASP NET Core - 以编程方式清除 ResponseCache
【发布时间】:2020-01-13 14:30:17
【问题描述】:

我有一个控制器动作,它呈现一个从数据库异步获取一些数据的局部视图。假设这些是菜单项。

 [Route("SomeData")]
        [ResponseCache(Duration = 1000 * 60 * 60)]
        public IActionResult SomeData()
        {
            //returns a partial view for my ajax call
        }

数据不会经常更改,但用户可能会做某事并知道这应该会导致该部分视图发生变化,即应该出现新的菜单项。

但是,对于缓存响应,数据不会从数据库加载。我想在页面上添加一个“刷新”按钮,以便用户可以明确清除所有缓存。

我试过用javascript来做window.reload(true);以及这个回复https://stackoverflow.com/a/55327928/2892378,但在这两种情况下都不起作用。

我需要与在 Chrome 中单击 Ctrl + Refresh 按钮相同的行为。

干杯

【问题讨论】:

    标签: javascript asp.net-core caching


    【解决方案1】:

    通过响应中的标头缓存在客户端上,您无法“清除”它。作为一种解决方法,您可以首先在客户端设置一个合适的响应缓存的最大年龄,然后使用VaryByHeaderVaryByQueryKeys,每次您想要刷新缓存时,您应该为您的标头/查询字符串提供不同的值:

    https://docs.microsoft.com/en-us/aspnet/core/performance/caching/middleware?view=aspnetcore-3.1

    【讨论】:

      猜你喜欢
      • 2021-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多