在Web场中远程重置服务器缓存的最佳方法是什么?

时间:2020-03-05 18:57:08  来源:igfitidea点击:

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

有没有人有一个安全/安全的方法示例来远程重置特定Web应用程序的缓存?理想情况下,我们可以说"清除在所有服务器上运行的应用X的缓存",但也可以"清除在服务器Y上运行的应用X的缓存"。

编辑/说明:

  • 我可能应该澄清一下,实际上不是通过应用程序执行此操作(即以某种方式登录到应用程序,浏览特定页面或者清除缓存的处理程序)。为了执行此操作,我们需要禁用/绕过日志记录和统计信息跟踪代码,或者弄乱统计信息。
  • 是的,缓存会定期过期。我想做的是设置一些东西,这样我可以按需使特定的缓存过期,通常是在我们更改了数据库中的某些东西之后(我们使用的是SQL 2000)。我们现在可以执行此操作,但只能登录到服务器本身。

解决方案

回答

这可能并不"优雅",但是我们可以设置执行批处理脚本的计划任务。该脚本实际上将为我们"触摸" web.config(或者其他导致重新编译的文件)。

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

回答

对于每个应用程序,我们可以编写一些cache-dump.aspx脚本来终止缓存/应用程序数据。将其复制到所有应用程序,并编写中心脚本来管理调用。

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

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

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

回答

找到了有关触摸实用程序的DevX文章,看起来很有用。

我将尝试将其与数据库中的表(添加记录,touch实用程序找到它并更新相应的web.config文件)或者Web服务(进行调用并调用touch实用程序进行更新)结合起来适当的web.config文件)