3

我的 MVC 控制器中有一个动作,我想根据传递的参数作为键来缓存它的返回结果,这样下次调用这个动作时,它会首先在缓存中查找,如果没有找到它会在数据中查找贮存。

 public ActionResult GetSearchResult(string zipcode, int pageSize, int currentPage)
 {
     Cache[zipcode + page + currentpage] = somedata // but it should be cleared after 30 min
 }

我怎样才能做到这一点?如上所述,我可以将数据存储在缓存对象中,但我想确保缓存对象在 30 分钟后被清除。我看不到如何在全局或每个缓存对象的基础上配置生命周期。

4

2 回答 2

2

您可以使用该Cache.Insert()方法。

Cache.Insert("key", myTimeSensitiveData, null, 
  DateTime.Now.AddMinutes(30), TimeSpan.Zero);

有关详细信息,请参阅ASP.NET 缓存:技术和最佳实践

于 2012-04-30T15:04:12.663 回答
2

我强烈建议对您的操作使用 outputcache 过滤器,而不是自己手动操作

     [OutputCache(Duration=1800, VaryByParam="*")]
     public ActionResult GetSearchResult(string zipcode, int pageSize, int currentPage)
     {
  //       Cache[zipcode + page + currentpage] = somedata // but it should be cleared after 30 min
     }
于 2012-04-30T15:04:55.000 回答