在MVC中缓存查找,默认过期?

时间:2013-09-27 14:03:47

标签: asp.net-mvc caching razor

我在我的mvc应用程序中缓存查找数据,我有以下代码:

  // GET: Category Types 
        public JsonResult GetAuditGrants(int auditID)
        {
            AuditDAL ad = new AuditDAL();
            if (System.Web.HttpContext.Current.Cache["AuditGrants"] == null)
            {
                System.Web.HttpContext.Current.Cache["AuditGrants"] = ad.GetAuditIssueGrants(auditID);
            }
            var types = (IEnumerable<Grant>)System.Web.HttpContext.Current.Cache["AuditGrants"];
            return this.Json(types.ToList());
        }

如果未设置过期,默认情况下数据何时在缓存中到期?是否应该将其存储在webconfig中以保持我应用中查找数据的一致性?

1 个答案:

答案 0 :(得分:0)

要回答您的第一个问题,我们可以咨询MSDN。根据{{​​3}},使用Item属性(或索引器)添加对象相当于调用Insert方法,its documentation状态:

  

使用Insert方法的重载将对象添加到缓存中   插入时没有文件或缓存依赖项,优先级为Default,   NoSlidingExpiration的滑动到期值和绝对值   NoAbsoluteExpiration的到期值。

你的第二个问题非常适合特定应用。最佳做法是分析您的应用程序。如果您的应用程序遇到大量缓存未命中且缓存仍然很小,那么您可能希望使用提供该控件的AddInserts重载之一来扩展到期滑动窗口。在这种情况下,将所选参数存储在应用程序设置中似乎是一个好主意。

有关此缓存的一件事要记住:它是每个应用程序域。如果您有多个Web前端,甚至IIS服务器配置为为您的应用程序启动多个工作进程,那么您可能无法充分利用缓存策略。在这种情况下,您可能需要使用能够为应用的多个实例提供持久性的内容。我们使用Redis,但还有很多其他选择。