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