代码之家  ›  专栏  ›  技术社区  ›  Mike

跨Web应用程序清除ASP.NET OutputCache

  •  2
  • Mike  · 技术社区  · 15 年前

    是否可以从另一个ASP.NET Web应用程序内部清除一个ASP.NET Web应用程序的输出缓存?

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

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

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

    实际上,如果在一台服务器上的Web应用程序之间有任何方式传递数据,那就可以解决我的问题,因为我可以使用+varybycustom。

    谢谢!

    - Mike Thomas

    2 回复  |  直到 15 年前
        1
  •  3
  •   devstuff    15 年前

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

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

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

        2
  •  2
  •   Badaro    15 年前

    我知道的一种方法是使用共享资源作为依赖项,通常是一个文件。文件更改后,缓存将被清除。我想你可以用 HttpResponse.AddFileDependency 为此。

    但是,在这些情况下,最好使用进程外缓存,例如 memcached . 我自己没有测试过,但是这个 link 处理如何使用memcached和outputcache。