我有这样的动作:
[OutputCache(Duration = 3600, Location = OutputCacheLocation.ServerAndClient, VaryByParam = "page;categor;searchString")]
public virtual async Task<ActionResult> Index(int? category, int page = 1, string searchString = null)
此操作可以具有多个缓存结果.到目前为止它的罚款.但是当我发布新内容时,我想删除所有这些多个缓存结果.
我知道我可以在foreach中使用RemoveOutputCacheItem和url列表.
var urls = new List<string>();
foreach (var url in urls)
{
HttpResponse.RemoveOutputCacheItem(url);
}
但为此我必须与我的数据库建立多个连接并获取类别,页面,即使我以某种方式得到所有搜索字符串,它仍然会造成太多麻烦.
我的问题是,有没有更好的方法一次删除所有这些缓存?
最佳答案
Is there a better way to remove all those cache at once
不是我知道的.但是您可以删除特定控制器操作方法的缓存项,如下所示(假设您的控制器名称为controller1).从Clearing the ASP.Net MVC Cache采取的想法
HttpResponse.RemoveOutputCacheItem(Url.Action("Index", "controller1", new { category = 1234 }));