是否可以在多个Web服务器之间共享HttpRuntime.Cache?

我们有一个Web应用程序,它将所有站点数据存储在HttpRuntime.Cache

我们现在需要跨2个负载平衡的Web服务器部署应用程序。

在这种情况下,每个Web服务器都有自己的缓存,这是不理想的,因为如果用户从webserver1请求数据,它将被缓存,但是下一个请求可能会转到webserver2,并且其先前请求缓存的数据赢得了’是可用的。

是否可以使用共享缓存提供程序在两个Web服务器之间共享HttpRuntime.Cache ,或者在它们之间复制缓存,以便在两个Web服务器上都可以使用相同的缓存? 如果是这样,我该怎么做才能解决这个问题?

不,你不能共享内置的ASP.NET缓存,但你可以使用像memcached或AppFabric这样的东西。

不,这是不可能的。 你必须使用所谓的ditributed缓存,如Microsoft AppFabric缓存或非常popupar开源产品memcached 。

从您的问题中可以看出,您已将用户数据作为缓存吗? 在那种情况下,我会和Aliostad说,不要去那里!

HttpRuntime缓存应该用于来自数据库的静态但经常使用的项目,主要目的应该是防止数据库命中,否则会发生在每个请求上, 无论用户是什么 ……所以像combobox或certian配置设置中的选项一样

如果你真的需要缓存用户数据,那么就像上面的Memcached,Appfabric或nvelocity一样

有多层缓存适合不同的需求,只有2个Web服务器表明您还不需要上面的分布式缓存框架。

什么是服务器负载,什么是限制因素,CPU,RAM,网络带宽? 在您的数据库或您的网络服务器上? 这些中的每一个都表示不同的缓存策略。

不要去那里。 通常,缓存是一个静态对象,只存在于AppDomain中。 手动更新这些是一个痛苦的世界,强烈建议反对。

您可以使用位于服务器前面的多种缓存解决方案来实现此目的。