так сделай вывод в шаблоны из контроллеров методами шаблонизатора. в смарти же есть функции шаблона, как раз для таких целей, если пройтись по коду смарти и гладко встроить блочное кеширование, то будет айсово :)
блочное кеширование - решает
пока шаблон раздуплился, что блок закеширован - контроллер уже отработал и сделал запрос в базу на выборку чего-то.
чтобы ШАБЛОНИЗАТОР ЗАПРАШИВАЛ КОНТРОЛЛЕР, а не КОНТРОЛЛЕР ЗАПРАШИВАЛ ШАБЛОН. просто раздели свою логику в приложении на плагины, то есть колонка "рсс новости" к примеру - плагин всего лишь, а вот например Static page = "/page.html" - это уже компонент(у меня), который в твоем случае является контроллером
зы: надеюсь каша моего сообщения читабельна и ахуенна :)