2014-10-17 69 views
0

我有一些需要从缓存中存储和提取的大对象。这些物体的大小约为1 - 2 mb。缓存大对象 - LocalCache性能

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

我正在使用Azure角色内缓存(共同定位)。

任何人都可以阐明为什么它会慢得多,没有启用localCache?

+1

可能更多关于SO的话题,因为这更多是一个实现问题。 – GlenH7 2014-10-17 15:25:47

回答

1

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

根据MSDN

启用本地缓存,缓存客户端存储到 对象在本地的引用。这使对象在 客户端应用程序的内存中保持活动状态。当应用程序请求对象时,缓存客户端首先检查对象是否驻留在本地的 缓存中。如果是这样,则在不联系服务器的情况下立即返回对该对象的引用 。如果不存在,则从服务器检索到的对象是 。高速缓存客户端然后反序列化对象并将对新检索对象的引用存储在本地高速缓存的 中。客户端应用程序使用同一个对象。

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

-Sameer

+0

谢谢你的回答,但3秒仍然过多?我知道1 - 2mb非常大,但高速缓存是共位的,所以我真的不能承担那么长的时间? – davenewza 2014-10-20 19:20:35

+0

您可以尝试[NCache for Azure](http://www.alachisoft.com/ncache/azure-index.html)等其他解决方案来测试应用程序的性能。因为它可能是Azure角色缓存中的一些性能问题。 – 2014-10-24 10:36:16