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

Уменьшаем кол-во запросов requestAction-ов с помощью Cache

CakePHP
В документации Cakephp 1.2 говорится о том что если requestAction используется без кеширования, то это может уменьшить производительность.
If used without caching requestAction can lead to poor performance. It is rarely appropriate to use in a controller or model.
И правда, сами подумайте, каждый раз при просмотре сайта, кроме основных запросов, к базе делается куча мелких, с помощью requestAction-ов, например…
И как истинные политики, они говорят ЧТО может произойти, при этом не говоря КАК этого избежать.
Привожу пример того, КАК с этим разбираюсь я.

Коротко, о том как работает requestAction:
requestAction обычно используется вo view-файле (папка views). из view-файла, вы делаете запрос на другую страницу, и получаете значение.
синтаксис requestAction-а таков: $this->requestAction('/articles/home');
который говорит Cakephp что надо сделать запрос по адресу адрес.сайта.сom/articles/home
в самом контроллере к которому обращается requestAction надо прописать return;
function home(){
$out = $this->Article->find('all');
Cache::write('articleHome', $out);
return $out;
}


теперь мы можем смело дописать к $this->requestAction('/articles/home'); следующие строки

$out = Cache::read('articlesHome');
if(empty($out)){
$out = $this->requestAction('/articles/home');
}

После этого, мы один раз делаем запрос к базе, пишем все в файл. и остальные разы читаем из файла. Если в результате какие-то проблем со стороны НЛО мы не сможем прочитать файл из кеша, ничего страшного. Опять делаем запрос к базе, и опять пишем в файл (у попа была собака...)

и теперь при каждом обновлении этого списка, если мы что-то добавили/изменили не забываем перезаписывать Cache:
Cache::write('articleHome', $out);
crosspost с моего блога
Теги:cakephprequestActioncacheкешпроизводительность
Хабы: CakePHP
Всего голосов 7: ↑5 и ↓2 +3
Просмотры808

Похожие публикации

UI-дизайнер
25 июня 202147 940 ₽Нетология
Python для работы с данными
25 июня 202131 500 ₽Нетология
Node.js: серверный JavaScript
28 июня 202127 000 ₽Loftschool
Основы вёрстки сайтов
28 июня 202120 000 ₽Loftschool
Веб-дизайнер
28 июня 202183 000 ₽GeekBrains

Лучшие публикации за сутки