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

时间:2010-11-10 12:23:24

标签: c# asp.net caching webserver

我们有一个将所有网站数据存储在HttpRuntime.Cache

中的网络应用程序

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

在这种情况下,每个Web服务器都有自己的缓存,这不是理想的,因为如果用户从webserver1请求数据,它将被缓存,但是下一个请求可能会转到webserver2,以及它们之前请求的数据缓存将无法使用。

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

4 个答案:

答案 0 :(得分:7)

不,您无法共享内置的ASP.NET缓存,但您可以使用memcachedAppFabric之类的内容。

答案 1 :(得分:2)

不,这是不可能的。您必须使用所谓的分布式缓存,如Microsoft AppFabric Caching或非常流行的开源产品memcached

答案 2 :(得分:1)

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

HttpRuntime缓存应该用于来自数据库的静态但经常使用的项目,主要目的应该是防止数据库命中,否则会发生在每个请求上而不管用户 ......所以事情像组合框或certian配置设置中的选项

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

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

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

答案 3 :(得分:0)

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

出于这种目的,您可以使用位于服务器前面的多种缓存解决方案。