【问题标题】:ASP.NET MVC Caching vary by controller action parameterASP.NET MVC 缓存因控制器操作参数而异
【发布时间】:2008-12-11 22:48:11
【问题描述】:

有什么方法可以使用outputcache 属性通过控制器操作参数改变缓存?我们有varybyparam,如果我的参数以 REST 方式嵌入到 URL 中,它将无法工作。

【问题讨论】:

    标签: asp.net-mvc caching outputcache


    【解决方案1】:

    在 Action 方法中实现“VaryByParam”并不意味着“通过传递给该操作方法的参数而变化”也很重要。它的意思是“因传递给作为 HTTP 参数的操作方法的参数而异”。

    [OutputCache(CacheProfile = "ContentPage", VaryByParam = "mode")]
    public ActionResult Index(string key, string mode)
    {
    
    }
    

    假设此操作方法的路线是:

      routes.MapRoute(
       "video-route-short",
       "video/{key}",
       new { controller = "Video", action = "Index", key = (string)null }
      );
    

    正如 Craig 上面所说,key 参数是 URL 的一部分,因此缓存不适用于它 - 所以它基本上总是被缓存。

    将通过“?mode=1”类型发送的模式参数将应用于缓存。

    【讨论】:

    • 从 MVC3 开始不再是这种情况 see
    【解决方案2】:

    缓存默认以这种方式工作。不同的 URL 给出不同的缓存位置。也许您的问题中缺少一些东西,但是,如前所述,它已经以这种方式工作。

    【讨论】:

      猜你喜欢
      • 2010-09-22
      • 2011-02-14
      • 1970-01-01
      • 2014-07-19
      • 2011-07-25
      • 2011-09-14
      • 2012-03-19
      • 2014-02-21
      • 1970-01-01
      相关资源
      最近更新 更多