企业缓存应用程序块|隔离存储和清除



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

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

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

  1. 是的,它也将从IsolatedStorage中删除。基本上,所有的操作都被汇集到内存缓存和IsolatedStorage中。目的是在应用程序关闭后保持持久性。任何仍在缓存中(未清除)的内容都将持久化到磁盘,并且可以在下次应用程序运行时恢复到内存缓存中。
  2. 我猜这是旧的"在单独的线程上做数据库操作"的问题。我以前使用过CAP,并在WinForms应用程序中遇到过这个问题。你可能想要编写自己的自定义缓存管理器或其他东西,EntLib支持得很好。从它你可以直接管理清理,也实现后台工人或任务或其他东西,当需要重新获取数据。可能还有其他方法可以处理它,但这将使它保持在缓存管理器中。否则,你将不得不在应用程序中有其他东西监控缓存并在必要时刷新它。

最新更新