ASP.NET MVC - OutputCache - 设置持续时间是否会过期缓存值?

时间:2016-12-16 19:06:03

标签: asp.net asp.net-mvc caching

设置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的新手,请原谅初学者问题。但是我的理解是,通过指定持续时间,假定在规定的时间之后发生了某些事情。在上面的代码片段中,无论何时刷新视图,时间都会持续存在。

1 个答案:

答案 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方法并正确定义到期时间,它应该有效。