创建ASP.Net MVC 3.0应用程序时,我可以在操作中包含OutputCache属性,并定义缓存将持续存在的持续时间。在此持续时间之后,任何导致操作触发的活动都将导致此缓存结果被丢弃和刷新。
我的问题是...... 此缓存输出是否对所有用户会话都是全局的,或者是特定于每个会话的此缓存选项。换句话说,如果user1发出请求,其中具有OutputCache属性的操作设置为1小时,则在中午(中午12:00)开始请求。 User2向同一个动作发出请求,但是在中午30点(下午12:30)。两个用户的缓存结果是否相同,如果是这样,user2的缓存输出是否会在下午1:00刷新?
答案 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
(非常便宜的操作)。