2012-04-19 2 views
1

Мои дочерние действия не кэшируются. Я не знаю почему.MVC 3 дочерние действия, не кэшированные с атрибутом OutputCache

Моя главная страница называет ребенка действия:

@Html.Action("Header", "Layout", new { selectedMarket = Model.SelectedMarket }) 

    [ChildActionOnly] 
    [OutputCache(Duration=60)] 
    public PartialViewResult Header(Guid selectedMarket) 
    { 
     var model = _marketService.GetHeaderViewModel(selectedMarket); 
     return PartialView(model); 
    } 

Этот ребенок действие выполняется, а парциальное повторно наносится на каждый запрос.

Примечание. Я могу успешно кэшировать всю страницу с помощью OutputCache. Это просто кэширование отверстий для пончиков, которое не работает для меня.

+0

Как вы осуществляете действие ребенка? –

ответ

1

установки OutputCacheAttribute следующим образом Try:

[OutputCache(Duration=3660, VaryByParam="selectedMarket")] 

Это создаст отдельный кэш для каждого selectedMarket (я полагаю, что это то, что вам нужно). Дайте мне знать, если это поможет.

+0

В конце концов, да. Сначала я пытался запустить простой случай, а затем добавить эту сложность. Я добавил VaryByParam, как вы предложили, но действие и представление моего ребенка все еще выполняются для каждого запроса. –

+0

По-видимому, он автоматически изменяется на значения маршрута. В моем тесте метод selectedMarket был выбран случайным образом для каждого запроса. Когда я начал использовать согласованные прогнозы на рынке в реальном мире, он работал так, как ожидалось. –

 Смежные вопросы

  • Нет связанных вопросов^_^