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

时间:2008-09-16 20:46:21

标签: caching

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

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

编辑/澄清:

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

  • 是的,缓存会定期到期。我想要做的是设置一些东西,这样我就可以根据需要使特定的缓存失效,通常是在我们改变了数据库中的东西之后(我们使用的是SQL 2000)。我们现在可以这样做,但只能登录服务器本身。

3 个答案:

答案 0 :(得分:2)

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

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

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

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

答案 1 :(得分:1)

找到一篇关于触控工具的DevX文章看起来很有用。

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

答案 2 :(得分:0)

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

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