我在我的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中以保持我应用中查找数据的一致性?
答案 0 :(得分:0)
要回答您的第一个问题,我们可以咨询MSDN。根据{{3}},使用Item
属性(或索引器)添加对象相当于调用Insert
方法,its documentation状态:
使用Insert方法的重载将对象添加到缓存中 插入时没有文件或缓存依赖项,优先级为Default, NoSlidingExpiration的滑动到期值和绝对值 NoAbsoluteExpiration的到期值。
你的第二个问题非常适合特定应用。最佳做法是分析您的应用程序。如果您的应用程序遇到大量缓存未命中且缓存仍然很小,那么您可能希望使用提供该控件的Add
或Inserts
重载之一来扩展到期滑动窗口。在这种情况下,将所选参数存储在应用程序设置中似乎是一个好主意。
有关此缓存的一件事要记住:它是每个应用程序域。如果您有多个Web前端,甚至IIS服务器配置为为您的应用程序启动多个工作进程,那么您可能无法充分利用缓存策略。在这种情况下,您可能需要使用能够为应用的多个实例提供持久性的内容。我们使用Redis,但还有很多其他选择。