MVC 5 Action过滤器执行方案

时间:2014-05-29 15:58:16

标签: asp.net-mvc outputcache

我有一个动作,其输出缓存20秒。如果我为此操作添加了操作过滤器( OnActionExecuting & OnActionExecuted ),即使采用了缓存视图,也会调用它,或者在20秒内只调用一次视图需要再次创建。

[OutputCache(Duration = 20, Location = OutputCacheLocation.Server, VaryByParam = "")]
public ActionResult Index()
    {
        ViewData["Message"] = "Welcome to ASP.NET MVC!";

        return View();
    }

2 个答案:

答案 0 :(得分:2)

此处OutputCache的含义是Index动作最多每20秒调用一次。如果一千个请求快速连续进入,则只有第一个请求实际上会进入您的操作并生成结果 - 其余的将只是从缓存中查找结果(假设缓存中有足够的空间用于结果)。

VaryByParam的{​​{1}}属性在此处不适用,因为您的OutputCache操作没有参数。

答案 1 :(得分:1)

当从缓存提供响应时,也会跳过操作过滤器。所以他们每20秒就会执行一次。