1

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

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

编辑/澄清:

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

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

4

3 回答 3

2

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

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

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

Context.Application.Lock()
Context.Session.Abandon()
Context.Application.RemoveAll()
Context.Application.UnLock()
于 2008-09-16T22:17:37.903 回答
1

找到一篇关于看起来很有用的触摸实用程序 的DevX文章。

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

于 2008-09-17T12:30:07.883 回答
0

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

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

于 2008-09-16T21:11:11.213 回答