Какова практика частичного кэширования в ASP MVC2?
Страницы моего сайта состоят из двух видов контента. Первая переменная между пользователями, но постоянная для всех страниц. Вторая постоянна для пользователей, но переменна для разных страниц. Это общий макет. Каков наилучший способ применить кеширование вывода к подобному контенту?
Насколько я понимаю, помощник Html.Substitute несовместим с конвейером рендеринга MVC2, что исключает старый способ кэширования пончиков.
Использовать обычное кэширование вывода с VaryByParam="user" для каждой страницы?
Уровень специфичности уменьшит значение кэширования вывода. Вряд ли один и тот же пользователь будет просматривать одну и ту же страницу очень много раз в течение срока службы кэшированного вывода.
Использовать альтернативную подсистему OutputCache
В Интернете есть несколько попыток изменить атрибут OutputCache и подсистему рендеринга для поддержки подстановки. Лучшее, что я нашел здесь.
Однако различные фрагменты, которые я нашел, кажутся неформальными реализациями и не очень хорошо поддерживаются. Кроме того, я склонен подозревать, что если бы было так легко добавить замещение обратно в конвейер MVC2, это было бы сделано.
Составьте последнюю страницу из нескольких дочерних действий, которые кэшируются индивидуально
Метод действия не будет помечен OutputCache
атрибут, и будет возвращать представление, которое содержит несколько Html.RenderAction
вызовы, которые будут извлекать независимо кэшированный контент. Помимо слегка тяжеловесных последствий использования RenderAction
, это добавило бы дополнительный слой косвенности и запаха кода.
Каков ваш опыт создания независимо кэшированного контента в MVC2? Что сработало хорошо, а что нет?
1 ответ
Пожалуйста, посмотрите на этот вопрос, а также информацию о том, как stackru это может вам помочь.