设置OutputCache的持续时间是否会使缓存的值到期?因为如果它,我没有看到它。
[OutputCache(Duration = 1, Location = OutputCacheLocation.Client, VaryByParam = "none", NoStore = true)]
public ActionResult Index()
{
if (System.Web.HttpContext.Current.Cache["time"] == null)
{
System.Web.HttpContext.Current.Cache["time"] = DateTime.Now;
}
}
我是使用OutputCache的新手,请原谅初学者问题。但是我的理解是,通过指定持续时间,假定在规定的时间之后发生了某些事情。在上面的代码片段中,无论何时刷新视图,时间都会持续存在。
答案 0 :(得分:1)
您将OutputCache与HttpContext.Current.Cache混淆。如果缓存未过期,则第一个用于在您执行操作时返回缓存视图。关于那个,你是对的。每1秒钟它将返回一个新视图。
但是,您正在填充DateTime.Now的HttpContext.Current.Cache永远不会过期。因为您没有定义绝对到期
https://msdn.microsoft.com/en-us/library/system.web.caching.cache(v=vs.110).aspx
这样做
System.Web.HttpContext.Current.Cache["time"] = DateTime.Now;
与此相同
System.Web.HttpContext.Current.Cache.Insert("time", DateTime.Now, null, System.Web.Caching.Cache.NoAbsoluteExpiration, System.Web.Caching.Cache.NoSlidingExpiration)
使用Insert方法并正确定义到期时间,它应该有效。