【发布时间】:2023-03-03 15:40:01
【问题描述】:
我们正在考虑在我们的 asp.net 3.5 应用程序中使用企业库缓存框架来存储我们最热门产品的小型数据表。
如果需要,有没有办法编写一个外部进程(如控制台应用程序)来删除这些数据表?例如,客户端可以进来并更新产品的数据,这将使存储在缓存中的数据表过时。发生这种情况时,我希望外部应用程序进入缓存并使用新数据删除甚至更新缓存。
【问题讨论】:
标签: asp.net caching enterprise-library
我们正在考虑在我们的 asp.net 3.5 应用程序中使用企业库缓存框架来存储我们最热门产品的小型数据表。
如果需要,有没有办法编写一个外部进程(如控制台应用程序)来删除这些数据表?例如,客户端可以进来并更新产品的数据,这将使存储在缓存中的数据表过时。发生这种情况时,我希望外部应用程序进入缓存并使用新数据删除甚至更新缓存。
【问题讨论】:
标签: asp.net caching enterprise-library
我可以想到两种方法来从进程外删除缓存项。
第一个是在将项目添加到缓存时使用FileDependency。当您想使缓存项过期时,请修改文件。
DataTable books = GetTopBooks();
ICacheManager cacheManager = CacheFactory.GetCacheManager();
cacheManager.Add("books", books, CacheItemPriority.NotRemovable, new BookCacheRefreshAction(),
new FileDependency("books.xml"));
然后,外部进程可以通过修改磁盘上的相应文件(在本例中为 books.xml)来使您的 DataTable 失效。您还可以配置 ICacheItemRefreshAction 以在缓存过期时刷新(例如从数据库中)。
如果由于某种原因基于文件的方法不够用,那么第二种方法是创建一个自定义接口,该接口可由进程外应用程序调用。例如创建一个 Web 服务,该服务将从缓存中删除项目并可能刷新缓存项目。
【讨论】: