Как кэшировать содержимое макета в Zend Framework - PullRequest
0 голосов
/ 07 ноября 2010

Как бы вы реализовали кэширование содержимого макета в Zend Framework?

В layout.phtml я делаю: $this->layout->content и хочу, чтобы содержимое этой переменной было кэшировано. Другие виджеты из макета работают в режиме реального времени (или кэшируются другим способом).

Лучшие ставки:

  • статический кеш (самый быстрый)
  • кэш страницы

Мои страницы уже имеют уникальный идентификатор страницы (canonical), поэтому его можно использовать в качестве тега кеша страницы.

Потенциально похоже, что мне нужно перегрузить __get свойство макета.

Я пытаюсь сделать что-то вроде компоновки SO (пользовательская панель вверху, отдых для всех).
Я предполагаю, что сайт должен работать без JavaScript.

1 Ответ

0 голосов
/ 08 ноября 2010

Возможно, вы захотите взглянуть на плагин Front Controller Cache , который описывает weierophinney. Возможно, проблема в том, что вы не хотите, чтобы скрипт останавливался при попадании в кеш. Таким образом, вы не exit; сценарий, вы можете работать с $request->setDispatched(true) в плагине. (Вам понадобится новый объект запроса для каждого отдельного кэшируемого).
Другой подход может заключаться в том, что вы не используете dispatchLoopStartup, а preDispatch в своем плагине и сбрасываете там диспетчеризацию.
Их путь на самом деле зависит от того, как вы загружаете все остальные вещи (кэшированные или нет). (Например, ActionStack отправляет новый запрос диспетчеру).

...