2008-12-11 8 views
2

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

ответ

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', применим к кешированию.

+0

Что касается MVC3, это уже не так [см.] (Http://stackoverflow.com/questions/4518671/does-varybyparam-also-read-routedata-values) – felickz 2015-11-03 17:10:28