Действительно. Давайте создадим разные реализации кеширования. Один в шаблонах с TTL, другой в мапере с обновлением на апдейте... еще осталось парочку придумать, что бы потом сказать - во, смотрите тут сколько кешей, огого.
Ну во-первых подобная бизнес логика вряд ли поменяется.
Поменяться - может и не поменяется, а вот новая добавиться - запросто может. А далее - см п.1
Во-вторых оно легко дорабатывается. Для работы кэша нужно 3 вещи: id соединения, ключ кэша, ttl.
Ну-ка тут поподробнее. Мы говорим о кеше с актуализацией на апдейте данных. Для этого нам нужно знать - какие данные были использованы при генерации этого вот куска хтмл-я. Не, конечно можно в шаблоне это еще одним вызовом куда-то приписать, получить, и т.д.... т.е. я знаю, что лимбовцы любят активные шаблоны, но не до такой же степени
Ну так include шаблонов в руки - пусть шаблон будет один
Ага, и не дай бог потребуются данные в разном виде. Ничо, еще какой-нибудь костыль в шаблонизатор прикрутим

)
В более-менее серьезных сайтах кэширование происходит на нескольких уровнях, т.к. условия разные.
На самом деле этих уровней не так уж и много, если мы говорим о MVC по крайней мере. Сырые данные кешировать... можно, но база обычно сама это неплохо делает. Полученные объекты - да, можно кешировать. Резултаты сложных рассчетов в контроллере... можно, конечно, напрмую класть в кеш, а можно обернуть в те же объекты - там уже все есть. Ну и готовый HTML. Несомненно, может быть специфика - как и в применении любого паттерна, но в большинстве случаев все укладывается в кеширование выхода и кеширование внутренних объектов.
Один multiget к memcache сделать дешевле, чем 10 подзапросов, через nginx+SSI.
В случае полного кеша - один мультигет - это запрос в PHP, а далее проходим роутер, контроллер, шаблонизатор... 10 SSI - это 10 запросов по файловой системе не уходя с уровня nginx. Файлы можно и в память положить, если так хочется, и в мемкеш - это уже вторично. Так что дешевле - один тяжелый запрос в PHP или 10 легких запросов по файлам?