Как правильно кешировать долгий запрос, чтобы параллельные запросы ожидали пока сгенерится кеш?

Картинка генерируется секунд 10.
Возможно ли сделать, чтобы при первом обращении к картинке она начала генерироваться и помещалась бы в кеш, а другие параллельные запросы (пока генерируется картинка) ожидали бы готовности кеша и возвращали ее из кеша?
  • Вопрос задан
  • 139 просмотров
Решения вопроса 1
REZ1DENT3
@REZ1DENT3
web-developer
Да, для этого есть локи.

https://laravel.com/docs/8.x/cache#managing-locks

use Illuminate\Support\Facades\Cache;

$lock = Cache::lock('pic' . $id, 10);

if ($lock->get()) {
    // генерируем картинку
    $lock->release();
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы