我有一个Asp.Net MVC 5网站,其中有一个控制器,其中包含显示餐厅资料的操作。这些配置文件可能会定期更新,或者可能不会长时间更新。我想知道是否有一个技巧会以某种方式使特定id的动作缓存失效。在这种情况下,我可以使用:
[OutputCache(Duration=int.MaxValue, VaryByParam="id")]
public async Task<ActionResult> Profile(string id)
然后,每当配置文件更新时,我都会调用类似Cache.InvalidateFor("action", "controller", "id")
的内容。我现在可以做的是将最新更新的日期和时间添加为操作的另一个参数。类似的东西:
[OutputCache(Duration=int.MaxValue, VaryByParam="id,lastChagned")]
public async Task<ActionResult> Profile(string id, DateTime lastChagned)
但是,我想避免在动作中添加另一个参数,这会使它看起来不那么整洁。
答案 0 :(得分:0)
行。找到了答案。这是从缓存中删除项目的代码:
public static void RemoveFromCache(string controller, string action)
{
var cacheManager = new OutputCacheManager();
cacheManager.RemoveItem(controller, action);
}
public static void RemoveFromCache(string controller, string action, object parameters)
{
var cacheManager = new OutputCacheManager();
cacheManager.RemoveItem(controller, action, parameters);
}