在MVC 6 / ASP.NET 5中清除输出缓存

时间:2016-02-18 18:03:20

标签: asp.net-mvc razor asp.net-core asp.net-core-mvc

我在部分视图中有html片段,它使用输出缓存,如此

 <cache vary-by="@Util.SomeID" expires-after="@TimeSpan.FromHours(1)">
     <div>some content</div>
 </cache>

如果我需要在缓存到期之前更新内容,我该如何破坏特定片段(或整个缓存,如有必要)的缓存?

我使用的是ASP.NET 5和MVC 6 ..

谢谢!

2 个答案:

答案 0 :(得分:1)

IMemoryCache接口没有清除缓存的方法。否则,您可以将IMemoryCache注入控制器或任何需要它的地方并调用该方法。

我建议在aspnet缓存存储库上发布功能请求或使用不同的缓存机制。

我正在努力将CacheManager扩展为可以在MVC Core中用作内存或分布式缓存,然后它将具有比内置更简单的内存缓存更多的功能......

答案 1 :(得分:0)

ASP.NET团队已确认今天无法直接清除缓存项目。建议的解决方法是使用“version”变量作为vary-by缓存参数的一部分。

这实际上不会清除现有值,但会呈现新值。旧值最终将在到期时清除。

https://github.com/aspnet/Mvc/issues/4117#issuecomment-187298466

的更多详情