Understanding HttpContext.Current.Cache
本文关键字:Cache Current HttpContext Understanding | 更新日期: 2023-09-27 18:31:27
我一直在对网站进行一些更改,并注意到当我对数据库进行更改时,即添加新的人员值,该人员的姓名不会显示在下拉列表中。
如果我重置应用程序池几次,该名称最终会出现在我身上。虽然对其他人来说似乎并不总是如此。
它似乎确实受到缓存的严格控制,我发现了以下内容:
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 而过期。
有什么想法吗?
我不确定哪个会胜出。似乎此代码正在设置滑动过期和绝对过期。我认为后者会在这方面获胜,但 MSDN 文档说您应该只使用其中一个。如果使用 slidingExexpation,则应将 absoluteExpiration 参数设置为 NoAbsoluteExpire,如果使用 absoluteExexpation,则应将 sslideingExpiration 设置为 NoSlidingExexpration。
如果我是你,我会在更新值时使缓存无效(HttpContext.Current.Cache.Remove("PersohnList")
并再次重置它。
+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 程序集。