代码之家  ›  专栏  ›  技术社区  ›  Jack Marchetti

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

  •  6
  • Jack Marchetti  · 技术社区  · 15 年前

    所以我有一个在午夜运行的过程,它为一个闪光物体设置一个起点和终点。这只需要每天运行一次,所以很明显我正在缓存结果集。

    但是,我遇到的问题是,如果数据在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 回复  |  直到 15 年前
        1
  •  5
  •   RickNZ    15 年前

    您可以在缓存对象上设置绝对expiration时间,这是一个日期时间。

    您还可以将绝对expiration与sqlcacheDependency组合在一起。

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

        2
  •  3
  •   Robin Day    15 年前

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

    Cache.Insert("MyKey", myObject, null, DateTime.Today.AddDays(1), TimeSpan.Zero);
    
        3
  •  1
  •   Steven Sudit    15 年前

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

    推荐文章