Где кэшировать данные: в модели или в контроллере?
Есть сайт на Yii. Приложение построено по принципу "толстая модель, тонкий контроллер". Полностью все операции проводятся в моделях. Контроллер только говорит, что вернуть и запускает нужные вьюхи.
Встал вопрос о кешировании. И вот я задумался, а где правильно кэшировать данные? Проще сделать это в модели ибо будет проще следить за валидностью кэша. Но при этом это излишни усложнит модели, которые и без того не слабые.
...а с учетом того, что мы можем иногда просить кешированные данные (для фронтэнда) а иногда не кешированные (для админки) становится совсем весело :)
В общем, от ситуации зависит. Забейте на "как правильно по MVC", думайте о том, как правильно по логике приложения.
Сейчас как-то модно стало следовать бессмысленным шаблонам проектирования и перегружать модели функционалом (куча методов "вернутьТакиеДанные(), вернутьДругиеДанные()), тогда как через контроллер решилось бы проще и понятнее.
У меня большинство моделий одни на 3 приложения. Поэтому все внутри.
А проблему с получением "живых" данных я решил путем подключения в этом приложении CDummyCache. И данные всегда свежие.
Очень хочется трукодить, но почему-то я солидарен с вами )) Такое ощущение, что этот принцип тонкого контроллера создание лишних проблем. По крайней мере, если использовать "куча методов "вернутьТакиеДанные(), вернутьДругиеДанные()"
В общем случае, если говорить о данных, то модель, по-хорошему, должна уметь это делать прозрачно. У неё запросили данные - а откуда она их взяла - не нашего ума дело.