使用Enterprise Caching Block一次刷新整个缓存

时间:2011-12-28 23:23:26

标签: caching .net-3.5 enterprise-library

我正在研究使用.NET 3.5服务的企业缓存块来缓存数据库中的一堆静态数据。

从我读过的所有内容来看,FileDependency似乎是存储不会过期的静态数据的最佳选择。但是,当文件更改并刷新缓存时,我需要获得一次回调以对该特定缓存执行一些后处理。如果我实现ICacheItemRefreshAction并在将项添加到缓存期间注册它,我会得到每个项的回调。

有没有办法为整个缓存注册一个回调,以便在缓存刷新时我不会看到成千上万的回调被调用?

由于

1 个答案:

答案 0 :(得分:0)

要解决您的后续行动,以获得比FileDependency更好的方法:您可以将SqlDependency包装在ICacheItemExpiration中。有关示例代码,请参阅SqlCacheDependency with the Caching Application Block

该方法仅适用于SQL Server,需要设置Service Broker。

就缓存级别回调而言,我没有看到实现这一目标的开箱即用方式;几乎所有东西都适合物品等级。你可以做的是创建自己的CacheManager实现,它具有缓存级别回调。

另一种方法可能是让ICacheItemRefreshAction只在缓存为空时执行任何操作(即最后一项已被删除)。