在ASP.NET 2.0中的特定时间清除缓存

时间:2009-12-08 15:47:28

标签: asp.net caching sqlcachedependency

所以我有一个在午夜运行的进程,它设置flash对象的起点和终点。这只需要每天运行一次,所以我显然是在缓存结果集。

但是,我遇到的问题是,如果数据仍然在midnite之后缓存,那么在缓存过期之前,它不会提取最正确的数据。

我基本上需要缓存在晚上11:59:59到期,所以在凌晨12:00它会得到正确的数据。

我猜测桌面上的SQL缓存依赖性我将从中提取数据是理想的,但我以前从未设置过。

有没有办法告诉缓存在正确的midnite中删除特定的项目?

谢谢你们!

- 绝对期满---

我想我明白了:

DateTime expireWeights = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 23, 59, 59, 999);
Cache.Insert("CacheItemName", itemToCache, null, expireWeights, System.Web.Caching.Cache.NoSlidingExpiration);

3 个答案:

答案 0 :(得分:5)

您可以在Cache对象上设置absoluteExpiration时间,这是一个DateTime。

您还可以将absoluteExpiration与SqlCacheDependency结合使用。

关于缓存过期时不提取新数据的问题:您可以连接CacheItemRemovedCallback以接收过期时间的通知,并在那时刷新缓存。

答案 1 :(得分:3)

我不明白为什么你的绝对过期问题?您可以指示项目从缓存过期的确切日期时间。因此,以下代码行将“myObject”插入到“MyKey”键下的缓存中,并将在第二天的午夜到期(无论何时进入缓存)。

Cache.Insert("MyKey", myObject, null, DateTime.Today.AddDays(1), TimeSpan.Zero);

答案 2 :(得分:1)

如果您在“基于时间的依赖关系”下查看here,则会显示如何将项目设置为在特定时间到期。这就是你要找的东西吗?