3

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

4

2 回答 2

10

在 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 }
  );

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

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

于 2009-05-14T18:39:38.803 回答
6

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

于 2008-12-12T13:54:21.037 回答