Проблема с кэшированием ASP .Net MVC 2.0
Я использую OutputCache для таких действий:
[OutputCache(Duration = 14400, VaryByParam = "none")]
public ContentResult Catalog()
{
return ...;
}
и моя функция RegisterRoutes в Global.asax.cs содержит маршрут:
routes.MapRoute(
"XMLRoute", // Route name
"{site}/catalog.xml", // URL with parameters
new { controller = "Home", action = "Catalog" } // Parameter defaults
);
Маршрут карты URL, такие как:
- example.com/site1/catalog.xml
- example.com/site2/catalog.xml
- example.com/whatever/catalog.xml
к действию каталога.
Я считаю, что ожидаемым результатом будет возвращение статического содержимого после первого запроса для каждого переданного параметра, но содержимое не кэшируется должным образом. Должен ли я изменить действие Каталога, чтобы использовать параметр, а затем указать VarybyParam = "none" и добавить параметр с UrlParameter.Optional в функцию MapRoute, или здесь что-то еще происходит?
1 ответ
После долгих проб и ошибок я обнаружил, что лучшим способом было использовать:
[OutputCache(Duration = 14400, VaryByParam = "*")]
И предоставьте параметры с помощью перенаправления, чтобы использовались значения по умолчанию и показывалось кэшированное содержимое.