情景:
在Web场方案的ASP.Net应用程序的WCF层中实现主数据的内存中缓存
我们提出的解决方案:
我们打算有一个外部服务/ exe /网页,它可以了解所有负载均衡的服务器(通过配置文件)。为了使特定缓存无效,我们将调用此外部组件,这反过来会使所有Web服务器上的相应缓存密钥无效,然后使用最新数据加载缓存。
问题:
虽然上述方法对我们有用,但我们认为它不是企业级LOB应用程序的干净方法。是否有更好/更清晰的方法来实现跨多个服务器的缓存过期?
注意:
答案 0 :(得分:1)
将您的设计与Windows Azure角色内缓存和AppFabric缓存进行比较。
在这些产品中,缓存存储在一个或多个服务器(缓存集群)中。为了加快请求速度,他们创建了Local Cache。
启用本地缓存后,缓存客户端会存储对该引用的引用 对象本地。此本地引用可使对象保持活动状态 客户端应用程序的内存。当应用程序请求时 对象,缓存客户端检查对象是否驻留在 本地缓存。如果是,则返回对该对象的引用 立即不联系服务器。如果它不存在,那么 从服务器检索对象。然后缓存客户端 反序列化对象并将引用存储到新的对象中 检索到的本地缓存中的对象。客户端应用程序使用它 相同的对象。
本地缓存可能因超时和/或通知而失效
Notification-based Invalidation
当您使用缓存通知时,您的应用程序会检查 定期缓存群集以查看是否有任何新通知 可用。这个间隔称为轮询间隔,是每个 默认为300秒。轮询间隔以单位为单位指定 应用程序配置设置中的秒数。请注意,即使有 基于通知的失效,超时仍然适用于 本地缓存。这使得基于通知的失效互补 基于超时的失效。