2014-02-28 76 views
1

我有一个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

好的。找到答案。下面是从缓存中移除项目的代码:

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); 
    }