Как стать автором
Обновить

Комментарии 6

В документации упирают на кэшируемость элементов.
То есть кусок который обращается к requestAction — мы делаем отдельно, элементом, а потом вызываем из view, как $this->element('elementName', array('cache' => true));

Настройки кэша у элемента довольно гибкие.

Ну а после серьезных обновлений (хотя я ставлю обновления кэша элемента на 2-5 минут, и он сам прочищается к этому времени), есть еще команда Cache::clear(), правда довольно злая.
На практике часто встречался с тем что кешировать надо было не весь элемент, а только сам запрос. который очень легко модифицировался в элементе.
То есть один запрос, а результат вывода меняется в зависимости от какого либо параметра?
Можно вложить элемент внутрь другого элемента.
Например показ списка баннеров, которые хранятся в базе. и надо ох показывать вразброску.
ну ясное дело, что без кэширования будет медленнее, чем с кэшированием. тем не менее requestAction не медленнее ClassRegistry::init('Model'). другое дело, что с реквестэкшеном могут быть трудности с отладкой, потому что для него создается новый экземляр диспатчера. ну и нужно следить, чтобы у пользователя был доступ ко всем экшенам, которые используются в одном запросе.
и насчет кэширования элементов, хотелось бы увидеть пример того, как нельзя закэшировать его целиком, а только результат запроса.
Кештрование результата запроса я привел в статье выше,
а кештрование всего элемента приведено в документации, как сказал пользователь Hellbot
надо в объявлении элемета указать продолжительность кеширования:
$this->element('latest_comments', array('cache'=>'+1 hour'));
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Изменить настройки темы

Истории