Метод remember кэша в Laravel
Частый сценарий: взять данные
из кэша, а если ключа нет -
выполнить тяжёлую работу, положить
результат в кэш и вернуть его.
Вручную это has + get
+ put. Короче и яснее -
один вызов Cache::remember.
<?php
use Illuminate\Support\Facades\Cache;
use App\Models\Post;
$posts = Cache::remember('posts.all', 60, function () {
return Post::all();
});
?>
Первый аргумент - ключ, второй - время жизни в секундах, третий - замыкание. Если ключ уже есть, замыкание не вызывается: Laravel сразу отдаёт значение из кэша. Если ключа нет - выполняется замыкание, его результат пишется в кэш на указанный срок и возвращается вам.
Так список постов из базы считают
не чаще раза в минуту (в примере
60 секунд). Остальные
запросы в этот интервал берут
уже сохранённый результат. Нагрузка
на базу падает, страница отвечает
быстрее.
Когда данные в базе изменились,
устаревший ключ нужно сбросить
отдельно (метод forget
в следующем уроке). Иначе до конца
срока remember будет отдавать
старый снимок.
Закэшируйте список категорий
на 5 минут через
remember.
Когда вызывается замыкание
в remember, а когда нет?
Закэшируйте настройки сайта
под ключом settings.all
на 300 секунд.