所以我有一个在午夜运行的进程,它设置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);
答案 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,则会显示如何将项目设置为在特定时间到期。这就是你要找的东西吗?