2010-11-07 3 views
0

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

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

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

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

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

Потенциально выглядит как я должен перегрузить __get свойство макета.

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

+0

Я думаю, что $ this-> layout-> содержит содержимое представления контроллера? Итак, вы хотите кэшировать результат действия? – Fge

+0

@Fge Результаты всех действий (или почти все, некоторые исключены). – takeshin

ответ

0

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

Смежные вопросы