【问题标题】:Caching large objects - LocalCache performance缓存大对象 - LocalCache 性能
【发布时间】:2014-10-17 15:18:56
【问题描述】:

我有一些需要从缓存中存储和获取的大对象。这些对象的大小约为 1 - 2 mb。

在启用localCache 的情况下运行时,检索时间不会超过几毫秒,但如果没有它,则始终需要大约 3 秒。

我正在使用 Azure 角色内缓存(托管)。

谁能解释一下为什么不启用 localCache 会慢很多?

【问题讨论】:

  • 可能更多关于 SO 的主题,因为这更像是一个实施问题。

标签: wcf caching azure azure-caching azure-in-role-cache


【解决方案1】:

LocalCache 是进程本地的,即在应用程序的进程内存中。如果启用 LocalCache,则从缓存中获取的对象也将存储在 LocalCache 中。该对象的每个下一个请求都将从该 LocalCache 提供服务(无需从进程外缓存中获取)。但是第一次检索对象需要时间。

根据MSDN

启用本地缓存后,缓存客户端会存储对 对象本地。这使对象在 客户端应用程序。当应用程序请求对象时, 缓存客户端首先检查对象是否驻留在本地 缓存。如果是,则立即返回对该对象的引用 无需联系服务器。如果不存在,则该对象是 从服务器检索。然后缓存客户端反序列化 对象并将对这个新检索到的对象的引用存储在 本地缓存。客户端应用程序使用相同的对象。

而当本地缓存被禁用时,每个检索请求都被定向到进程外缓存,导致每次都从外部进程的内存中获取对象。

【讨论】:

  • 感谢您的回答,但肯定 3 秒仍然过长?我知道 1 - 2mb 非常大,但是缓存是同位的,所以我真的无法理解需要这么长时间?
  • 您可以尝试其他解决方案,例如 NCache for Azure 来对您的应用程序的性能进行基准测试。因为这可能是 Azure 角色内缓存的一些性能问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-16
  • 2012-11-17
  • 1970-01-01
  • 1970-01-01
  • 2016-03-29
  • 1970-01-01
相关资源
最近更新 更多