删除具有多个 VaryByParam 的 OutputCache

本文关键字:VaryByParam OutputCache 删除 | 更新日期: 2023-09-27 18:31:18

我有一个这样的操作:

    [OutputCache(Duration = 3600, Location = OutputCacheLocation.ServerAndClient, VaryByParam = "page;categor;searchString")]
    public virtual async Task<ActionResult> Index(int? category, int page = 1, string searchString = null)

此操作可以有多个缓存结果。 到目前为止还不错。 但是当我发布新内容时,我喜欢删除所有这些多个缓存结果。

我知道我可以将RemoveOutputCacheItem与 foreach 左右的 url 列表一起使用。

var urls = new List<string>();
foreach (var url in urls)
{
   HttpResponse.RemoveOutputCacheItem(url);
}

但是为此,我必须与我的数据库建立多个连接并获取类别,页面,即使以某种方式我得到了所有的搜索字符串,它仍然会造成太多麻烦。

我的问题是,有没有更好的方法一次删除所有这些缓存?

删除具有多个 VaryByParam 的 OutputCache

有没有更好的方法一次删除所有这些缓存

不是我知道的。但是,您可以删除特定控制器操作方法的缓存项,如下所示(假设控制器名称为 controller1 )。想法取自清除 ASP.Net MVC缓存

HttpResponse.RemoveOutputCacheItem(Url.Action("Index", "controller1", new { category = 1234  }));