2010-10-01 2 views
1

Я использую OutputCache на действии, как это:Проблема с ASP .Net MVC 2.0 Кэширование

[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 
); 

карты маршрутов URLs нравится:

  • example.com/site1/catalog.xml
  • пример. ком/site2/catalog.xml
  • example.com/whatever/catalog.xml

в каталог действий.

Я считаю, что ожидаемым результатом было бы вернуть статический контент после первого запроса для каждого переданного параметра, но содержимое не кэшируется должным образом. Должен ли я изменить действие «Каталог» для использования параметра, а затем указать VarybyParam = «none» и добавить параметр с UrlParameter.Optional в функции MapRoute или что-то еще происходит здесь?

+0

Можете ли вы уточнить, «содержимое не кэшировано должным образом»? Какие результаты вы видите и как они отличаются от ваших ожиданий? – bzlm

+0

Извините, я должен быть более ясным. Я имею в виду, что контент не извлекается из кеша, который он создается снова для каждого запроса. – gmakrygiannis

ответ

0

После долгих проб и ошибок я обнаружил, что лучший способ заключается в использовании:

[OutputCache(Duration = 14400, VaryByParam = "*")] 

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