【发布时间】:2010-07-23 20:21:44
【问题描述】:
我们正在开发一个分布在 3 个负载平衡的 Web 服务器上的 Web 应用程序。我们通过 NHibernate 检索的很多数据都存储在 System.Web.Caching.Cache 中。
System.Web.Caching.Cache 在提高应用程序的响应能力方面做了很多工作,但有一些问题我们并不完全知道如何解决,例如
当用户在 server1 上请求数据时,该数据缓存在 server1 上,但对于他们的下一个请求,负载平衡器可能会将他们定向到 server2。他们在 server1 上请求的数据不再可用,server2 将不得不再次从数据库中请求。
如果用户在 server1 上执行某些操作以使缓存数据无效,则在 server1 上刷新缓存。但是,原始缓存在 server2 和 server3 上仍然可用,因此当用户提交后续请求并被定向到其他任何一个服务器时,他们将看到无效数据。
我们的应用程序会定期更新数据(例如性能数据)。当性能数据更新时,我们希望从缓存中刷新它,因此当用户再次请求数据时,他们会看到最新的数据。我们如何让这些应用程序刷新 3 个 Web 服务器上的缓存?
解决这些问题的最佳方法是什么?
我们是否应该将缓存存储在单独的服务器上,例如我们可以为HttpContext.Session 使用 SessionState 服务器?
有没有办法让我们在其他 2 台服务器的 Cache 上设置一个 Cache Dependency?
我们是否可以在实际的数据库表或行上实现缓存依赖?当这些更改缓存被刷新? -- 或者我们可以设置一个数据库触发器以某种方式刷新缓存吗?
【问题讨论】:
标签: asp.net asp.net-mvc caching