【问题标题】:Enterprise Caching Application Block | IsolatedStorage and Scavenging企业缓存应用程序块 |隔离存储和清理
【发布时间】:2012-01-01 22:54:50
【问题描述】:

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

  1. 假设项 A 由于清理而从缓存中删除。它也会从 IsolatedStorage 中删除吗?如果确实如此,那么坚持隔离存储的目的是什么。我想使用IsolatedStorage,这样即使物品被清理,至少可以从存储中挑选和填充?

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

【问题讨论】:

    标签: .net caching


    【解决方案1】:
    1. 是的,它也会从 IsolatedStorage 中删除。基本上,所有的操作都会同时进入内存缓存和独立存储。目的是在应用程序关闭后具有持久性。任何仍在缓存中(且未被清除)的内容都会保存到磁盘中,并且可以在应用程序下次运行时恢复到内存中的缓存中。
    2. 我猜这是“在单独的线程上执行数据库操作”问题。我以前使用过 CAP 并且在 WinForms 应用程序中遇到了这个问题。您可能想要编写自己的自定义缓存管理器或其他东西,EntLib 很好地支持它。从中您可以直接管理清理,并在需要重新获取数据时实现 BackgroundWorkers 或 Tasks 或其他东西。可能还有其他方法可以处理它,但这会将它包含在缓存管理器中。否则,您必须在应用程序中设置其他东西来监控缓存并在必要时刷新它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-04
      • 2010-11-21
      • 2010-10-16
      • 2017-01-22
      相关资源
      最近更新 更多