企业缓存应用程序块| IsolatedStorage和Scavenging

时间:2011-11-19 15:10:42

标签: .net caching

我正在使用缓存应用程序块进行缓存。我有一些缓存的大对象。问题是由于Scavenging,项目将从缓存中删除。现在,因为从数据库再次获取对象是昂贵的,我正在考虑使用IsolatedStorage来保持磁盘上的对象。有以下问题:

  1. 假设清除项目A已从缓存中删除。它也会从IsolatedStorage中删除吗?如果确实如此,那么持久存在于IsolatedStorage中的目的是什么。我想使用IsolatedStorage,即使项目被清除,至少可以从存储中挑选和填充它?

  2. 由于对象很大,我想在24小时内只刷新一次。但是,替换它们以便对最终用户没有影响的唯一方法是首先获取项目然后在缓存中替换它们而不是允许过期然后开始获取数据?

1 个答案:

答案 0 :(得分:0)

  1. 是的,它也将从IsolatedStorage中删除。基本上,所有操作都可以进入内存缓存和IsolatedStorage。目的是在应用程序关闭后保持持久性。仍然在缓存中(而不是清除)的任何内容都会持久保存到磁盘,并且可以在下次运行应用程序时还原到内存缓存中。
  2. 我猜这是''在单独的线程上做数据库操作'问题。我之前使用过CAP,并在WinForms应用程序中遇到此问题。您可能想要编写自己的自定义缓存管理器或其他东西,EntLib很好地支持。从中可以直接管理清理,并在重新获取数据时实现BackgroundWorkers或Tasks等。可能还有其他方法可以处理它,但这会将它保存在缓存管理器中。否则,你必须在app中监视缓存并在必要时刷新它。