ASP.Net MVC 3.0属性[OutputCache] - 这是全局的还是会话?

时间:2011-03-16 16:21:05

标签: asp.net asp.net-mvc asp.net-mvc-3 outputcache

创建ASP.Net MVC 3.0应用程序时,我可以在操作中包含OutputCache属性,并定义缓存将持续存在的持续时间。在此持续时间之后,任何导致操作触发的活动都将导致此缓存结果被丢弃和刷新。

我的问题是...... 此缓存输出是否对所有用户会话都是全局的,或者是特定于每个会话的此缓存选项。换句话说,如果user1发出请求,其中具有OutputCache属性的操作设置为1小时,则在中午(中午12:00)开始请求。 User2向同一个动作发出请求,但是在中午30点(下午12:30)。两个用户的缓存结果是否相同,如果是这样,user2的缓存输出是否会在下午1:00刷新?

3 个答案:

答案 0 :(得分:6)

取决于。如果您的网址包含任何特定于用户的部分(例如~/blogs/userid/1),则为是,否则它不是特定于会话的。您可以根据参数变化微调它......

ASP NET中的缓存MVC与Web Forms没有什么不同,它只是基于URL 的相同基础架构。

答案 1 :(得分:5)

你可以使用像Aliostad这样的varybyparam,持续时间将是特定于会话的,否则就不是。

[OutputCache(Duration=10, VaryByParam="none")]

http://www.asp.net/mvc/tutorials/improving-performance-with-output-caching-cs

答案 2 :(得分:0)

您可以使用Session轻松地使其VaryByCustom依赖并返回SessionId(非常便宜的操作)。