Техническое задание: Оптимизация системы кеширования Laravel + Redis

Контекст проекта

Имеется крупный веб-проект на фреймворке Laravel с объёмом контента более 400 000 страниц. Для повышения производительности внедрено кеширование через Redis (драйвер phpredis), однако текущая реализация не справляется с полным покрытием и создаёт избыточную нагрузку на сервер.

Проблемы текущей реализации

  • Ежесуточный полный сброс кеша неэффективен для такого объёма страниц.
  • За 24 часа успевает закешироваться только около 50 000 страниц из 400 000+.
  • Отсутствует механизм прогрева кеша, что приводит к пиковым нагрузкам на CPU после его сброса.
  • Кеш инвалидируется глобально, а не на уровне отдельных изменений данных.

Основные цели проекта

  1. Полное кеширование сайта: Обеспечить 100% покрытие всех страниц проекта кешем.
  2. Снижение нагрузки на CPU: Минимизировать нагрузку на процессор за счёт эффективного кеширования и прогрева.
  3. Грамотная инвалидация: Настроить точечный сброс кеша в ответ на изменения данных, а не по расписанию.

Задачи для исполнителя

1. Аудит текущей системы

  • Провести анализ текущего механизма кеширования в связке Laravel + Redis.
  • Проверить корректность формирования ключей кеша, настройки TTL (времени жизни) и использования тегов (tags).
  • Оценить логику и эффективность текущего процесса сброса кеша.

2. Реализация прогрева кеша

  • Разработать и внедрить механизм предварительного прогрева (pre-warming) кеша для всех 400 000+ страниц.
  • Решение должно быть масштабируемым и не вызывать отказов в обслуживании при выполнении.
  • Прогрев должен быть управляемым (запускаться по необходимости, например, после деплоя).

3. Настройка событийной инвалидации

  • Перестроить систему сброса кеша с ежесуточного цикла на событийную модель.
  • Кеш конкретной страницы или группы страниц должен сбрасываться автоматически при изменении соответствующих данных в базе или админ-панели.
  • Обеспечить возможность как точечного, так и группового сброса (например, по тегам).

Ожидаемый результат

  • Все страницы сайта обслуживаются из кеша Redis.
  • Значительное снижение средней и пиковой нагрузки на процессор сервера.
  • Актуальность контента: пользователи сразу видят обновления после их публикации, без задержек в сутки.
  • Стабильная и предсказуемая производительность сайта независимо от трафика.

Технический стек

Laravel, Redis (phpredis), Очереди (Queues) для фонового прогрева (желательно).

Разработка интернет-магазина на React и Node.js

Требуется создать полнофункциональный e-commerce сайт с современным фронтендом на React и серверной частью на Node.js. Задача включает разработку пользовательского интерфейса и серверной логики.