Кэширование ASP.NET MVC зависит от параметра действия контроллера

Есть ли способ изменить кэширование параметром действия контроллера с помощью атрибута outputcache ? У нас есть varbyparam, который не будет работать, если мои параметры встроены в URL способом REST.

11.12.2008 22:48:11
2 ОТВЕТА
РЕШЕНИЕ

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

5
12.12.2008 13:54:21

В методе 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, который будет отправлен через ?mode=1тип ', будет применяться к кешированию.

10
14.05.2009 18:39:38
Что касается MVC3, это уже не так, см.
felickz 3.11.2015 17:10:28