Кэширование ASP.NET MVC зависит от параметра действия контроллера - PullRequest
2 голосов
/ 12 декабря 2008

Можно ли как-то изменить кэширование параметром действия контроллера, используя атрибут outputcache ? У нас есть varbyparapara , который не будет работать, если мои параметры будут встроены в URL способом REST.

Ответы [ 2 ]

10 голосов
/ 14 мая 2009

Также важно понимать в методе 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, будет применяться к кешированию.

5 голосов
/ 12 декабря 2008

Кэширование работает таким образом по умолчанию. Разные URL дают разные места в кэше. Возможно, в вашем вопросе чего-то не хватает, но, как уже говорилось, это уже работает.

...