Оба экономят вам ресурсы. Вы можете кэшировать любой из них или оба. Это сильно зависит от вашего точного кода. Некоторые структуры не могут быть кэшированы (на ум приходит SimpleXML - например, твиттер), поэтому вам необходимо кэшировать вывод.
Вы можете кэшировать звонки вашей модели. Вы можете кэшировать свой конфиг.
Но все же я думаю, что это своего рода преждевременная оптимизация (которая является корнем всего зла)
Обновление: Я бы выборочно кэшировал вывод.
В контроллере я бы просматривал элементы и проверял, есть ли у элемента кэш, если это так, присваивает его некоторой выходной переменной, в противном случае извлекает из БД. Затем на экране просмотрите предварительно загруженное значение или визуализируйте частичное. Я предполагаю, что рендеринг данных является узким местом.
Но, в конце концов, я думаю, что лучшее решение - это кэшировать весь вывод всего раздела сообщений. Если он меняется, как раз в день или даже раз в час, это огромная выгода. Я бы проверил в контроллере, существует ли кеш, если он есть, назначил его переменной представления и включил какой-нибудь флаг ($this->view->hasCachedPosts = true
). Затем в поле зрения визуализируйте кэшированный ответ. Если кеш пропущен, загрузите необходимые данные. Также не забудьте вставить очистку кэша в методы обновления / удаления / вставки моделей.
Если у вас много изменений в минуту (огромная аудитория), может помочь даже кэширование 30-х годов. А если у вас небольшая аудитория, то кэширование должно длиться дольше.
Чем больше изменяется ваш контент, тем меньшие части необходимо кэшировать, чтобы большие порции не периодически становились недействительными.