【问题标题】:Is it possible to share HttpRuntime.Cache between multiple web servers?是否可以在多个 Web 服务器之间共享 HttpRuntime.Cache?
【发布时间】:2011-05-07 20:41:39
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: c# asp.net caching webserver


    【解决方案1】:

    不,您不能共享内置的 ASP.NET 缓存,但您可以改用 memcachedAppFabric 之类的东西。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        从您的问题看来,您已将用户数据缓存在其中?在那种情况下,我会和 Aliostad 一起说不要去那里!

        HttpRuntime 缓存应该用于来自数据库的静态但经常使用的项目,主要目的应该是防止每次请求都会发生数据库命中无论用户如何...所以事情喜欢组合框中的选项或某些配置设置

        如果您确实需要缓存用户数据,那么如上所述 Memcached、Appfabric 或 nvelocity

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

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

        【讨论】:

          【解决方案4】:

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

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

          【讨论】:

            猜你喜欢
            • 2012-11-28
            • 2020-10-30
            • 2019-01-18
            • 2011-03-30
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多