Увійти Реєстрація
Блог Серії
Кар'єра
Вакансії Компанії
Навчання
Документація Співбесіди Тестування Відео
Екосистема
Пакети Ресурси Проєкти Інструменти Події
Інше
Про нас Реклама

Що робить route:cache і коли він ламається?

php artisan route:cache компілює всі маршрути в один PHP-файл у bootstrap/cache. Laravel більше не виконує routes/*.php на кожен запит, і реєстрація маршрутів стає майже миттєвою - на застосунках із сотнями маршрутів це помітно.

Коли він ламається чи заважає:

  • Маршрути не оновлюються. Після кешування нові маршрути не з'являються, доки кеш не перебудувати. Тому route:cache (чи optimize) виконують на кожному деплої, а локально не вмикають.
  • Маршрути, що залежать від стану під час реєстрації. Якщо в routes/web.php маршрути генеруються з бази чи з конфігурації, яка змінюється без деплою, кеш «заморозить» їх на момент збирання.
  • Конфлікт імен. Два маршрути з однаковим ім'ям без кешу мовчки перезаписують одне одного, а при кешуванні команда падає з помилкою - це навіть корисно.

Маршрути на замиканнях у сучасних версіях кешуються (їх серіалізують), але звичайна практика - контролери: їх легше тестувати й шукати.

Діагностика: php artisan route:list показує маршрути з кешу, якщо він є; route:clear прибирає кеш.

Докладніше в документації: Кешування маршрутів

Перевір себе

20 випадкових питань за спробу, після завершення - розбір кожної помилки

Схожі питання