Проблема с кэшированием 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 = "*")]

И предоставьте параметры с помощью перенаправления, чтобы использовались значения по умолчанию и показывалось кэшированное содержимое.

Другие вопросы по тегам