Есть ли способ изменить кеширование с помощью параметра действия контроллера с помощью атрибута outputcache? У нас есть varybyparam, который не будет работать, если мои параметры встроены в URL-адрес в режиме REST.ASP.NET MVC Кэширование зависит от параметра действия контроллера
2
A
ответ
5
Кэширование работает таким образом по умолчанию. Различные URL-адреса предоставляют разные места в кеше. Возможно, в вашем вопросе чего-то не хватает, но, как сказано, он уже работает таким образом.
10
Его также важно реализовать в методе действий, который «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 говорит выше, ключевым параметром является частью URL, и поэтому кэширование не относится к нему - так по существу, всегда кэшируется.
Параметр режима, который будет отправлен с помощью типа '?mode=1
', применим к кешированию.
Что касается MVC3, это уже не так [см.] (Http://stackoverflow.com/questions/4518671/does-varybyparam-also-read-routedata-values) – felickz 2015-11-03 17:10:28