我正在研究使用.NET 3.5服务的企业缓存块来缓存数据库中的一堆静态数据。
从我读过的所有内容来看,FileDependency似乎是存储不会过期的静态数据的最佳选择。但是,当文件更改并刷新缓存时,我需要获得一次回调以对该特定缓存执行一些后处理。如果我实现ICacheItemRefreshAction并在将项添加到缓存期间注册它,我会得到每个项的回调。
有没有办法为整个缓存注册一个回调,以便在缓存刷新时我不会看到成千上万的回调被调用?
由于
答案 0 :(得分:0)
要解决您的后续行动,以获得比FileDependency更好的方法:您可以将SqlDependency
包装在ICacheItemExpiration中。有关示例代码,请参阅SqlCacheDependency with the Caching Application Block。
该方法仅适用于SQL Server,需要设置Service Broker。
就缓存级别回调而言,我没有看到实现这一目标的开箱即用方式;几乎所有东西都适合物品等级。你可以做的是创建自己的CacheManager实现,它具有缓存级别回调。
另一种方法可能是让ICacheItemRefreshAction只在缓存为空时执行任何操作(即最后一项已被删除)。