【问题标题】:What is the best way to remotely reset the server cache in a web farm?在网络场中远程重置服务器缓存的最佳方法是什么?
【发布时间】:2010-09-09 18:19:28
【问题描述】:

我们的每个生产 Web 服务器都为单独的网站(ASP.NET Web 应用程序)维护自己的缓存。目前要清除缓存,我们登录服务器并“触摸”web.config 文件。

有没有人提供安全/可靠方式远程重置特定网络应用程序缓存的示例?理想情况下,我们可以说“清除所有服务器上运行的应用 X 的缓存”,也可以说“清除运行在服务器 Y 上的应用 X 的缓存”。

编辑/澄清:

  • 我可能应该澄清一下,通过应用程序本身执行此操作并不是一个真正的选择(即某种登录到应用程序、浏览特定页面或清除缓存的处理程序)。为了做这样的事情,我们需要禁用/绕过日志记录和统计跟踪代码,或者弄乱我们的统计数据。

  • 是的,缓存会定期过期。不过,我想做的是设置一些东西,以便我可以根据需要使特定的缓存过期,通常是在我们更改数据库中的某些内容之后(我们使用的是 SQL 2000)。我们现在可以做到这一点,但只能通过自己登录服务器。

【问题讨论】:

    标签: caching


    【解决方案1】:

    对于每个应用程序,您可以编写一个小的 cache-dump.aspx 脚本来杀死缓存/应用程序数据。将其复制到您的所有应用程序并编写一个集线器脚本来管理调用。

    为了安全起见,您可以添加各种身份验证查找或 IP 检查。

    这是我进行实际应用转储的方式:

    Context.Application.Lock()
    Context.Session.Abandon()
    Context.Application.RemoveAll()
    Context.Application.UnLock()
    

    【讨论】:

      【解决方案2】:

      找到了一篇DevX 文章,介绍了一个看起来很有用的触摸实用程序。

      我将尝试将它与数据库中的表(添加一条记录,触摸实用程序找到它并更新相应的 web.config 文件)或 Web 服务(拨打电话,触摸实用程序获取调用以更新相应的 web.config 文件)

      【讨论】:

        【解决方案3】:

        这可能不是“优雅的”,但您可以设置执行批处理脚本的计划任务。该脚本本质上会为您“接触”web.config(或导致重新编译的其他文件)。

        否则,您的应用程序缓存是否未设置为 N 分钟后过期?

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-01-13
          • 1970-01-01
          • 2011-06-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多