如何在输出缓存中使用动态持续时间值?

时间:2012-05-03 07:20:06

标签: asp.net-mvc-3 output-caching

我正在使用ASP.NET MVC3 我在控制器方法上使用了输出缓存。

   [OutputCache(Duration = 3660, VaryByParam = "none")]
   public ActionResult Index()
   {
       some code;
       return View();
   }

我想在输出缓存中使用一些静态变量或其他东西来设置动态持续时间。

我该怎么做?

1 个答案:

答案 0 :(得分:11)

我会继承OutputCache属性并在那里设置Duration

public static class CacheConfig
{
    public static int Duration = 36600;
}

public class MyOutputCacheAttribute : OutputCacheAttribute
{
    public MyOutputCacheAttribute()
    {
        this.Duration = CacheConfig.Duration;
    }
}

[MyOutputCache(VaryByParam = "none")]
public ActionResult Index()
{
    return View();
}

然后,您可以通过Duration

动态更改CacheConfig.Duration全局

如果您愿意,您仍然可以覆盖每个操作的全局设置:

[MyOutputCache(Duration = 100, VaryByParam = "none")]
public ActionResult OtherAction()
{
    return View();
}