在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文件)