Кеширование данных &quot;правильнее&quot; описывать в модели или контроллере?
я обычно кеширую в моделе, в контроллере должна быть только функция model->getData, а откуда эти данные берутся это уже не забота контроллера и вот почему: только модель знает какие данные можно/нельзя кешировать, как долго кеш остается валидным и когда и как нужно обновить данные. Плохо когда инфомарция о природе данные размывается и на модель и на контроллер. ИМХО.
ИМХО сильно зависит от логики, кеширую:
 — данные (Вывод в Модели), как правило основного контента, например большой запрос, который бьется на страницы 
 — кеширую HTML блок (В контроллере), обычно топы, или тематические банеры по тематическим разделам или прочие предложения, не основной контент, но часто запрашиваемый ) Как правило такой контент расчитывается по крону.
 — полностью HTML страницу (как правило index.htm или часто-запрашиваемых страниц). Данное кеширование у меня настроено средствами WEB сервера

При желании и кеширование блоков можно настроить средствами WEB сервера, используя ssi. Я писал об этом на Хабре habrahabr.ru/post/109050/
Но в этом случае фреймворк значительно усложняется