我们正在开发一个跨3台负载平衡的web服务器的web应用程序。我们通过NHibernate提取的许多数据都存储在System.Web.Caching.Cache中。
System.Web.Caching.Cache为提高应用程序的响应能力做了很多工作,但是有几个问题我们不知道如何解决,例如
解决这些问题的最佳方法是什么?
我们是否应该将缓存存储在单独的服务器上,就像我们可以用HttpContext.Session服务器存储SessionState服务器一样?
是否有一种方法可以在其他两个服务器上设置缓存依赖项?
我们可以在实际的数据库表或行上实现缓存依赖吗?当这些更改发生时,缓存会被刷新?--或者我们可以设置一个数据库触发器来以某种方式刷新缓存吗?
发布于 2010-07-23 12:21:44
你有几个选择:
1)使用分布式缓存(如远程缓存、速度或ncache)
2)使用所有web服务器都使用的共享缓存实例(例如memcached )。
NHibernate为所有这些提供程序提供了二级缓存,可以找到这里。
发布于 2010-07-23 12:05:54
是的,多服务器环境暴露了ASP.NET缓存的弱点,因为它仅限于单服务器。您可能需要考虑使用像AppFabric这样的分布式缓存,这将为您提供一个逻辑缓存,作为所有三个web服务器的基础。
AppFabric可以与NHibernate一起作为二级缓存使用-参见http://sourceforge.net/projects/nhcontrib/files/NHibernate.Caches/ (尽管这个问题建议当前的实现可能与AppFabric v1发布版不同步)。
https://stackoverflow.com/questions/3317867
复制相似问题