我们正在研究分布在3个负载平衡Web服务器上的Web应用程序。我们通过NHibernate获取的大量数据存储在System.Web.Caching.Cache
中。当我使用3个Web服务器时,如何管理存储在Web服务器上的缓存?
System.Web.Caching.Cache
做了很多提高应用程序的响应能力,但也有一些问题,我们并不确切地知道如何解决,如
当用户请求server1的数据数据缓存在server1上,但是对于下一个请求,负载平衡器可能会将它们指向server2。他们在server1上请求的数据不再可用,server2将不得不再次从数据库请求它。
如果用户在server1上执行某些操作以使缓存的数据无效,则会在server1上刷新缓存。但是server3的server2 &服务器仍然可以使用原始缓存,所以当用户提交后续请求并将其导向其他服务器时,它们将显示无效数据。
我们有定期更新数据(例如性能数据)的应用程序。性能数据更新时,我们希望从缓存中清除此数据,以便用户再次请求数据时,会向他们显示最新数据。我们如何让这些应用程序清除3台Web服务器上的缓存?
解决这些问题的最佳方法是什么?
我们是否应该使用SessionState服务器将缓存存储在单独的服务器上,例如我们可以使用HttpContext.Session
?
有没有办法让我们在其他2台服务器上的缓存上设置Cache Dependency?
我们有可能在实际的数据库表或行上实现缓存依赖关系吗?当这些更改缓存刷新? - 或者我们可以设置一个数据库触发器来刷新缓存吗?