ASP.Net MVC 3.0属性[OutputCache]
在创建ASP.Net MVC 3.0应用程序时,我可以在动作中包含OutputCache属性,并定义缓存持续的持续时间。 在此持续时间之后,导致该动作触发的任何活动都会导致此缓存的结果被丢弃并刷新。
我的问题是...这是所有用户会话的全局缓存输出还是每个会话特定的缓存选项。 换句话说,如果user1在OutputCache属性设置为1小时的操作发出请求,并在中午(中午12:00)开始请求。 用户2对同一动作发出请求,但在中午三十点(下午12:30)。 两位用户的缓存结果是否相同,如果是这样,用户2的缓存输出是否会在下午1:00更新?
依靠。 如果你的URL包含任何用户特定的部分(例如~/blogs/userid/1
),那么是的,否则它不是会话特定的。 你可以根据参数的不同对它进行微调,...
ASP .NET中的缓存MVC与Web Forms没有区别,它只是基于URL的基础结构 。
你可以使用varybyparam像Aliostad所说的那样,持续时间将会是会话特定的,否则它不是。
[OutputCache(Duration=10, VaryByParam="none")]
http://www.asp.net/mvc/tutorials/improving-performance-with-output-caching-cs
您可以使用VaryByCustom
轻松使其与Session
相关并返回SessionId
(非常便宜的操作)。