代码之家  ›  专栏  ›  技术社区  ›  DaveDev

使用3台web服务器时,如何管理存储在web服务器上的缓存?

  •  0
  • DaveDev  · 技术社区  · 14 年前

    System.Web.Caching.Cache

    在提高应用程序的响应性方面做了很多工作,但是有一些问题我们不知道如何解决,例如

    1. 当用户请求server1上的数据时,数据会缓存在server1上,但是对于他们的下一个请求,负载平衡器可能会将他们指向server2。他们在server1上请求的数据不再可用,server2将不得不再次从数据库中请求该数据。

    2. 我们有定期更新数据(如性能数据)的应用程序。当性能数据更新时,我们希望从缓存中清除这些数据,这样当用户再次请求数据时,就会显示最新的数据。如何让这些应用程序刷新3个web服务器上的缓存?

    我们应该把缓存存储在一个单独的服务器上吗 HttpContext.Session

    我们有没有办法在其他两台服务器的缓存上设置缓存依赖关系?

    我们是否可以在实际的数据库表或行上实现缓存依赖关系?当这些更改发生时,缓存将被刷新?--或者我们可以设置一个数据库触发器来刷新缓存吗?

    2 回复  |  直到 14 年前
        1
  •  0
  •   DanP    14 年前

    您有几个选择:

    1) 使用分布式缓存(例如distcache、velocity或ncache)

    2) 使用所有web服务器都使用的共享缓存实例(例如memcached)。

    NHibernate为所有这些都提供了二级缓存提供程序,可以找到 here

        2
  •  2
  •   Community kfsone    7 年前

    是的,多服务器环境暴露了ASP.NET缓存的弱点,因为它只是一台服务器。您可能需要考虑使用分布式缓存,如 AppFabric

    AppFabric可以与NHibernate一起用作二级缓存—请参阅 http://sourceforge.net/projects/nhcontrib/files/NHibernate.Caches/ this question 表明当前的实现可能不是AppFabric v1版本的最新版本)。