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

问题描述:

我们有一个网络应用程序,它将所有网站数据存储在HttpRuntime.Cache中。是否可以在多个Web服务器之间共享HttpRuntime.Cache?

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

因此,每个Web服务器都有自己的缓存,这并不理想,因为如果用户请求来自webserver1的数据,它将被缓存,但下一个请求可能会转到webserver2,并且他们以前的数据请求缓存将不可用。

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

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

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

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

不是,这是不可能的。您必须使用像微软AppFabric Caching这样的所谓的分布式缓存或非常开放源代码的产品memcached

听起来你的问题是你有用户数据它的缓存?在那种情况下,我会和Aliostad在一起,说不要去那里!

的httpRuntime缓存应该用于那些来自数据库,主要目的应该是防止将在每次请求无论用户否则发生数据库访问静态的,而是经常使用的物品......这样的事情就像在一个选项组合框或certian配置设置

如果真正需要缓存的用户数据,然后按上述的Memcached,AppFabric中或nvelocity

有适合不同的需要高速缓存的层,仅具有2的网络服务器表明,您不尚未需要上面的分布式缓存框架。

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