我有一个控制器操作,它呈现一个部分视图,该视图异步地从数据库获取一些数据。假设这些是菜单项。
[Route("SomeData")]
[ResponseCache(Duration = 1000 * 60 * 60)]
public IActionResult SomeData()
{
//returns a partial view for my ajax call
}数据并不经常更改,但是用户可能会做一些事情,并且知道它应该导致部分视图中的更改,即应该出现新的菜单项。
但是,对于缓存的响应,数据不会从DB加载。我想在页面上添加一个“刷新”按钮,这样用户就可以显式清除所有缓存。
我尝试了javascript来做window.reload(true);和这个回复https://stackoverflow.com/a/55327928/2892378,但是在这两种情况下它都不起作用。
我需要相同的行为,点击Ctrl +刷新按钮在Chrome。
干杯
发布于 2020-01-13 06:30:17
它是通过响应中无法“清除”的头部缓存在客户机上的。作为解决办法,您可以首先在客户端设置响应缓存的最大年龄,然后使用VaryByHeader或VaryByQueryKeys,每次您想刷新缓存时,都应该为您的头/查询字符串提供不同的值:
https://learn.microsoft.com/en-us/aspnet/core/performance/caching/middleware?view=aspnetcore-3.1
https://stackoverflow.com/questions/59685230
复制相似问题