php artisan optimize виконує пакет кешувань, які прибирають повторну роботу з кожного запиту:
php artisan config:cache # усі config/*.php в один масив
php artisan route:cache # маршрути в серіалізований вигляд
php artisan view:cache # прекомпіляція Blade
php artisan event:cache # мапа подій і слухачів
Зворотна дія - php artisan optimize:clear.
Що це дає: застосунок перестає на кожному запиті обходити десятки файлів конфігурації, парсити маршрути й компілювати шаблони. На середньому проєкті це десятки мілісекунд, які видно на кожному запиті.
Коли шкодить:
- Локально під час розробки. Закешований конфіг не помічає змін у
.env, а закешовані маршрути - нових маршрутів. Півгодини пошуку помилки, якої немає. route:cacheне працює із замиканнями в маршрутах: команда впаде з помилкою. Маршрути мають вказувати на контролери.env()поза конфігами перестає працювати - див. окреме питання про це.- Якщо конфіг залежить від запиту. Кеш збирається один раз під час деплою, тож щось на кшталт мультитенантності за доменом у конфігу зафіксується у стані збирання.
Порядок під час деплою має значення: спершу викласти новий код, потім кешувати. Якщо кешувати до оновлення файлів, у кеш потрапить попередня версія.