我有一个动作,其输出缓存20秒。如果我为此操作添加了操作过滤器( OnActionExecuting & OnActionExecuted ),即使采用了缓存视图,也会调用它,或者在20秒内只调用一次视图需要再次创建。
[OutputCache(Duration = 20, Location = OutputCacheLocation.Server, VaryByParam = "")]
public ActionResult Index()
{
ViewData["Message"] = "Welcome to ASP.NET MVC!";
return View();
}
答案 0 :(得分:2)
此处OutputCache
的含义是Index
动作最多每20秒调用一次。如果一千个请求快速连续进入,则只有第一个请求实际上会进入您的操作并生成结果 - 其余的将只是从缓存中查找结果(假设缓存中有足够的空间用于结果)。
VaryByParam
的{{1}}属性在此处不适用,因为您的OutputCache
操作没有参数。
答案 1 :(得分:1)
当从缓存提供响应时,也会跳过操作过滤器。所以他们每20秒就会执行一次。