Laravel — это как красивый джип у соседа: с виду премиум, внутри — тот же движок, что у половины района. Только если его не обслуживать, будет хавать бензин как бешеный и глохнуть на каждом повороте.

Все эти «советы по оптимизации» в официальных доках и блогах — они звучат как список таблеток от головной боли. Вроде помогает, а вроде и нет. Поэтому давай разберёмся, что реально ускоряет Laravel, а что просто делает видимость работы.

Рассмотрим, где кэшить, где рубить SQL-запросы, где забить на советы и идти пить чай. Без пафоса, без витрин, только практика и пару плевков в сторону тех, кто продаёт «магические способы ускорить всё сразу».

1. Кэширование — мать его

Да, звучит банально, но без кэша Laravel превращается в домохозяйку, которая 20 раз подряд спрашивает: «А где соль?»

  • config:cache — запускай и не ссы. Но не забудь: если втащишь новую настройку и забудешь перекэшировать, потом будешь материться.
  • route:cache — вещь, но только если у тебя нет роутов через closures. Будет падать, как пьяный студент.
  • view:cache — норм, особенно если у тебя Blade как новогодняя ёлка.
  • DB::remember() — спасает, когда у тебя списки из 100500 записей. Только не превращай всё подряд в кэш — иначе потом сам запутаешься, что актуально, а что уже протухло.

2. SQL-запросы: меньше — значит быстрее

Laravel — это любитель шлёпать SELECT внутри цикла. Итог — твоя база горит, а ты смотришь в монитор как на бывшую: вроде всё работает, а внутри пусто.

  • Eager Loading (with) — если у тебя есть посты и комменты, не тяни их по одному. Затянул сразу пачкой и забыл.
  • Pagination — юзай, если у тебя списки длиннее, чем очередь в «Пятёрочке». Никто не будет грузить всё сразу.
  • Индексы — банально, но многие забывают. Без индекса поиск по таблице — это прогулка слепого по минному полю.

3. Фронт: резать и сжимать

CSS и JS — вот эти жирные дети, которые жрут всё внимание.

  • Laravel Mix — пусть жрёт и минифицирует.
  • Объединяй файлы: один жирный запрос быстрее десятка мелких. Но не сходи с ума — иногда проще подключить пару модулей отдельно, чем раздувать монстра.

4. Картинки: сжать и выкинуть

CDN — особенно если юзеры не только из твоего района.

Сжимай фотки. Если у тебя PNG на 5 МБ на главной странице, тебя надо лишать права писать код.

5. Очереди и Horizon

Если у тебя письмо отправляется синхронно при регистрации — поздравляю, ты убил UX. Horizon даст тебе норм мониторинг и контроль очередей. А Redis — это must-have, забудь про database-очереди, они такие же медленные, как госуслуги.

6. Поиск: Scout или валиум

Когда у тебя данные растут как сорняки, поиск становится адом. Scout решает, но не строй иллюзий: если ты бездумно лупишь всё в поисковый индекс, будет та же жопа, только дороже.

7. Апдейты — зло и спасение

Да, обновляй зависимости. Но знай: «composer update» — это как русская рулетка. Один пакет обновился — и всё падает. Так что сначала staging, потом прод.

8. Debugbar

Это не для продакшена, а для того, чтобы ты видел, где Laravel сосёт ресурсы. Но если вдруг оставишь включённым на бою — готовься к весёлым багрепортам от пользователей.

9. Сервер

Не надейся, что PHP сам себя ускорит. Настрой PHP-FPM, кеши, и убери весь этот зоопарк модулей Apache, если ты ещё на нём сидишь. Nginx — норм, но и он жрёт время, если у тебя руки из задницы.

Финал

Оптимизация Laravel — это не чеклист для галочки. Это как чистить ружьё: если делаешь тяп-ляп, оно выстрелит тебе в лицо. И главное — не верь тем, кто продаёт «10 секретных способов ускорить Laravel». Секрет один: меньше говнокода, больше мозгов.