2

是否可以从另一个 asp.net web 应用程序中清除一个 asp.net web 应用程序的输出缓存?

原因是......我们有几个结构类似......的wep应用程序

/area1/ 和 /area2/ 中的页面被缓存并通过 /intranet/cms/ 进行管理。当使用 /intranet/cms/ 编辑页面时,我想将其从相应 /area#/ 应用程序的缓存中清除。

我已经尝试使用 VaryByCustom 来查找存储在 HttpContext.Cache 中的 guid,但这似乎是每个 Web 应用程序缓存的,这不起作用。

真的,如果有任何方法可以在单个服务器上的 Web 应用程序之间传递数据,那将解决我的问题,因为我可以使用 + VaryByCustom。

谢谢!

——迈克·托马斯

4

2 回答 2

3

我过去这样做的方式是有一个“隐藏”页面(在每个/areaX站点中),它执行刷新、重新加载等操作。该页面在执行任何操作之前验证共享秘密查询参数(以避免 DoS 攻击)。如果有效,则操作完成后页面将输出“OK”消息;如果密钥无效,则生成 404 错误。

如果您希望刷新以每个项目或每个组为基础,则添加第二个参数来标识该项目/组。

此方法也独立于服务器技术,如果需要,可以由其他管理工具触发。

于 2009-09-15T04:54:05.320 回答
2

我知道这样做的一种方法是使用共享资源作为依赖项,通常是文件。当文件改变时,缓存被清除。我认为您可以为此使用HttpResponse.AddFileDependency 。

但是,在这些情况下,通常最好使用进程外缓存,例如memcached。我自己没有测试过,但是这个链接涉及使用 memcached 和 OutputCache。

于 2009-09-15T04:37:22.297 回答