了解HttpContext.Current.Cache

时间:2014-11-20 17:02:21

标签: c# asp.net httpcontext.cache

我一直在对网站进行一些更改,并注意到当我在数据库中进行更改时,即。添加新人值,该人的姓名不会出现在下拉列表中。

如果我重置应用程序池几次,最终会为我显示名称。虽然对其他人来说并不总是这样。

它看起来似乎受到缓存的严重控制,我发现了以下内容:

HttpContext.Current.Cache.Insert("PersohnList", d, Nothing, 
       DateTime.MaxValue, New System.TimeSpan(0, 30, 0), 
       Caching.CacheItemPriority.High, Nothing)

我注意到了一些感兴趣的值,

a)  DateTime.MaxValue  
b)  New System.TimeSpan(0, 30, 0)

缓存是否会在30分钟后过期并插入新人的姓名,或者由于DateTime.MaxValue而不会过期。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

我不确定哪个会胜出。看来这段代码正在设置slidingExpiration和absoluteExpiration。我认为后者会赢得这个,但MSDN documentation说你应该只使用其中一个。如果使用slidingExpiration,则应将absoluteExpiration参数设置为NoAbsoluteExpiration,如果使用absoluteExpiration,则应将slidingExpiration设置为NoSlidingExpiration

如果我是你,我会在更新值(HttpContext.Current.Cache.Remove("PersohnList")时使缓存无效并重新重置。

答案 1 :(得分:0)

滑动窗口的

+1。每当另一个用户触摸该密钥“PersohnList”时,缓存到期就会增加30分钟。另外,请查看System.Runtime.Caching作为更现代的替代方案。

来自http://msdn.microsoft.com/en-us/library/system.runtime.caching%28v=vs.110%29.aspx

“System.Runtime.Caching命名空间包含允许您在.NET Framework应用程序中实现缓存的类型。

此命名空间中的类提供了一种使用ASP.NET中的缓存工具的方法,但不依赖于System.Web程序集。“