在asp.net mvc中以编程方式中止OutputCache持续时间

我正在使用OutputCache属性在服务器端缓存我的动作的html输出。

很好,它可以工作,但现在我的情况是内容变化很少,但是当它发生时,用户在下一个请求中看到新数据至关重要。

那么,有没有办法以编程方式中止页面缓存持续时间?

提前致谢,

AndréCarlucci

是的,可以使用HttpResponse.RemoveOutputCacheItem方法 。 检查这个问题:

  • SO – 如何以编程方式清除控制器操作方法的outputcache

您可以扩展OutputCacheAttribute以创建自己的缓存机制,以允许类似于原始ASP.net缓存的依赖性。

您还可以使用HttpCachePolicy.AddValidationCallback() 。 一般的想法是,当呈现页面并将其插入到缓存中时,此回调将与页面一起插入。 在从高速缓存检索页面时,调用回调并最终确定高速缓存的页面是陈旧的(并且应该被引导)还是有效的(并且应该被提供)。 有关示例,请参阅AuthorizeAttribute源 。 但是,如果页面变得陈旧很少,则可以通过其他响应中提到的RemoveOutputCacheItem()方法为您提供更好的服务。