Caching 使用企业缓存块一次性刷新整个缓存

Caching 使用企业缓存块一次性刷新整个缓存,caching,.net-3.5,enterprise-library,Caching,.net 3.5,Enterprise Library,我正在研究为我的.NET3.5服务使用企业缓存块来缓存数据库中的一组静态数据 从我读到的所有内容来看,FileDependency似乎是存储不会经常过期的静态数据的最佳选择。但是,当文件发生更改并且缓存被刷新时,我需要获得一次回调来对特定缓存进行一些后处理。如果我实现ICacheItemRefreshAction并在向缓存添加项的过程中注册它,我会为它们中的每一个获取回调 有没有一种方法可以为整个缓存注册回调,这样我就不会在缓存刷新时看到数千个回调被调用 感谢为您提供了一种比文件依赖性更好的方法

我正在研究为我的.NET3.5服务使用企业缓存块来缓存数据库中的一组静态数据

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

有没有一种方法可以为整个缓存注册回调,这样我就不会在缓存刷新时看到数千个回调被调用


感谢为您提供了一种比文件依赖性更好的方法来解决后续问题:您可以在ICacheItemExpiration中包装一个。有关示例代码,请参见

这种方法只适用于SQL Server,并且需要设置ServiceBroker

就缓存级别回调而言,我认为没有现成的方法可以实现这一点;几乎所有的东西都是针对物品的。您可以做的是创建自己的CacheManager实现,该实现具有缓存级别回调功能


另一种方法可能是使用ICacheItemRefreshAction,它仅在缓存为空时执行任何操作,即最后一项已被删除。

作为后续措施,是否有比使用FileDependency更好的方法来缓存数据库中的静态数据。例如,如果我想缓存我们支持并驻留在数据库中的国家及其货币代码的列表。除非我们在数据库中手动插入新条目,否则此数据不会更改。是否有更好的方法触发更改并刷新缓存?