Lightning
Трудоголик
Блочное кеширование и MVC
Как делаю я.
В контроллере проверяю существует ли кэш данного блока. Если существует, то загружаем этот кэш, если нет, то создаем объект(ы) модели, информация из которого(ых) выводится в данный блок.
В шаблоне приходится делать что-то вроде этого:
В принципе, это та же проверка кэша блока (+создание кэша, если его нет). Получается, одна и та же структура проверок повторяется и в контроллере, и в шаблонах.
Я пока не знаю как от этого уйти. Мне кажется, что в рамках MVC никак. Первое, что приходит в голову - активные шаблоны. Эта идея мне тоже не нравится, т.к. часто контроллер может использовать разные шаблоны, а один шаблон может использоваться разными контроллерами, т.е. view и controller приходится разделять.
Вопрос:
- Как лучше (в плане качества кода) реализовать логику блочного кэширования в рамках MVC?
Как делаю я.
В контроллере проверяю существует ли кэш данного блока. Если существует, то загружаем этот кэш, если нет, то создаем объект(ы) модели, информация из которого(ых) выводится в данный блок.
В шаблоне приходится делать что-то вроде этого:
PHP:
if( block( 'name' ) ) {
//блок
} endBlock( 'name' );
Я пока не знаю как от этого уйти. Мне кажется, что в рамках MVC никак. Первое, что приходит в голову - активные шаблоны. Эта идея мне тоже не нравится, т.к. часто контроллер может использовать разные шаблоны, а один шаблон может использоваться разными контроллерами, т.е. view и controller приходится разделять.
Вопрос:
- Как лучше (в плане качества кода) реализовать логику блочного кэширования в рамках MVC?
Т.е. вообще на уровень веб-сервера (проверка по статик-кешу, если мисс - на бекенд) и блочность (когда она нужна) реализовывать обычными SSI инструкциями. А второй уровень кеша ниже - кеширует объекты моделей и результаты выборок.
модули для nginx есть. С моей точки зрения это не очень удобно и стремно в плане безопасности - верстальщик делает шаблоны для фронт-енда, т.е. потенциально может случится обвал