使用多个VaryByParam删除OutputCache

时间:2016-01-20 12:27:14

标签: c# asp.net asp.net-mvc caching outputcache

我有这样的行动:

import org.apache.commons.lang.StringEscapeUtils;

...
StringEscapeUtils.unescapeJava("test string with \u97F3\u6A02"); 
 //gives result : test string with 音樂
StringEscapeUtils.escapeJava("test string with 音樂"); 
 //gives result : test string with \u97F3\u6A02

此操作可以有多个缓存结果。到目前为止它的罚款。但是当我发布新内容时,我想删除所有这些多重缓存结果。

我知道我可以将 [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

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

我的问题是,是否有更好的方法可以立即删除所有缓存?

1 个答案:

答案 0 :(得分:1)

  

是否有更好的方法可以立即删除所有缓存

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

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