我在部分视图中有html片段,它使用输出缓存,如此
<cache vary-by="@Util.SomeID" expires-after="@TimeSpan.FromHours(1)">
<div>some content</div>
</cache>
如果我需要在缓存到期之前更新内容,我该如何破坏特定片段(或整个缓存,如有必要)的缓存?
我使用的是ASP.NET 5和MVC 6 ..
谢谢!
答案 0 :(得分:1)
IMemoryCache
接口没有清除缓存的方法。否则,您可以将IMemoryCache
注入控制器或任何需要它的地方并调用该方法。
我建议在aspnet缓存存储库上发布功能请求或使用不同的缓存机制。
我正在努力将CacheManager扩展为可以在MVC Core中用作内存或分布式缓存,然后它将具有比内置更简单的内存缓存更多的功能......
答案 1 :(得分:0)
ASP.NET团队已确认今天无法直接清除缓存项目。建议的解决方法是使用“version”变量作为vary-by缓存参数的一部分。
这实际上不会清除现有值,但会呈现新值。旧值最终将在到期时清除。
https://github.com/aspnet/Mvc/issues/4117#issuecomment-187298466
的更多详情