Когда я использую outputcaching для метода действия, он кэшируется по полному URL-адресу, и я хотел бы кэшировать страницу, но игнорировать некоторые части URL-адреса.
Пользовательский маршрут, определенный в Global.asax:
routes.MapRoute(
"Template",
"Report/{reportid}/{reportname}/Template/{templateid}/{action}",
new { controller = "Template", action = "Index" }
);
Мой контроллер шаблонов
public class TemplateController : Controller
{
[OutputCache(Duration=60*60*2)]
public ActionResult Index(Template template)
{
/* some code */
}
}
Например, когда я перехожу к следующим URL-адресам:
http://mywebsite.com/Report/789/cacheme/Template/5
-> кешируется на 2 часа на основе URL
http://mywebsite.com/Report/777/anothercacheme/Template/5
-> также кэшируется на 2 часа на основе этого URL
Я бы хотел, чтобы OutputCache игнорировал значения reportname и reportid, поэтому, когда я перехожу по указанному выше URL-адресу, он возвращает та же кэшированная версия. Возможно ли это с помощью атрибута OutputCache или мне придется написать собственный атрибут OutputCache FilterAttribute?
VaryByParam
только для templateid. Помимо этого, настраиваемый атрибут фильтра будет кстати! - person VinayC   schedule 14.04.2011