我们有一个将所有网站数据存储在HttpRuntime.Cache
。
我们现在需要跨2个负载均衡的Web服务器部署应用程序。
在这种情况下,每个Web服务器都有自己的缓存,这不是理想的,因为如果用户从webserver1请求数据,它将被缓存,但是下一个请求可能会转到webserver2,以及它们之前请求的数据缓存将无法使用。
是否可以使用共享缓存提供程序在两个Web服务器之间共享HttpRuntime.Cache
或在它们之间复制缓存,以便在两个Web服务器上都可以使用相同的缓存?如果是这样,我该怎么做才能解决这个问题?
答案 0 :(得分:7)
答案 1 :(得分:2)
不,这是不可能的。您必须使用所谓的分布式缓存,如Microsoft AppFabric Caching或非常流行的开源产品memcached。
答案 2 :(得分:1)
从您的问题中可以看出,您已将用户数据作为缓存吗?在那种情况下,我会和Aliostad一起说并且不要去那里!
HttpRuntime缓存应该用于来自数据库的静态但经常使用的项目,主要目的应该是防止数据库命中,否则会发生在每个请求上而不管用户 ......所以事情像组合框或certian配置设置中的选项
如果你真的需要缓存用户数据,那么就像上面的Memcached,Appfabric或nvelocity一样
有多层缓存适合不同的需求,只有2个Web服务器表明您还不需要上面的分布式缓存框架。
什么是服务器负载,限制因素是什么,CPU,RAM,网络带宽?在您的数据库或您的网络服务器上?这些都表明了不同的缓存策略。
答案 3 :(得分:0)
不要去那里。通常,缓存是一个静态对象,只存在于AppDomain中。手动更新这些是一个痛苦的世界,并强烈建议反对。
出于这种目的,您可以使用位于服务器前面的多种缓存解决方案。