"Сайт на Laravel тормозит: 5 скрытых причин и как их найти"

Андрей Игнатов
Игнатов Андрей
Founder & Techlead
14 мая 2026
43

Laravel — один из самых быстрых и мощных PHP-фреймворков в мире. Но если ваш проект загружается дольше 2–3 секунд, выдает ошибки 502/504 Gateway Timeout при наплыве трафика или перегружает сервер — дело не в фреймворке. Дело в архитектуре.

Каждая лишняя секунда загрузки сайта снижает конверсию на 20%. В этой статье технические специалисты «Команды-А» разбирают 5 самых частых причин, из-за которых тормозят проекты на Laravel, и показывают, как их устранить.


1. Проблема N+1 запроса к базе данных

Это абсолютный лидер среди «убийц» производительности. Проблема N+1 возникает при работе с ORM Eloquent, когда вы получаете список моделей, а затем в цикле обращаетесь к связанным данным.

Например, вы выводите 50 товаров и для каждого запрашиваете его категорию:

$products = Product::all();

foreach ($products as $product) {
    echo $product->category->name;
}

Что происходит под капотом

Laravel делает 1 запрос для получения товаров и еще 50 запросов для получения категорий.

Итого: 51 запрос к БД для одной простой страницы.

Как лечить

Использовать «жадную загрузку» (Eager Loading) с помощью метода with():

$products = Product::with('category')->get();

Всего пара символов снижает количество запросов к базе данных с 51 до 2.

Чтобы найти такие утечки, мы обычно используем пакет Laravel Debugbar или Clockwork.


2. Отсутствие индексов в таблицах MySQL/PostgreSQL

Когда база данных разрастается до сотен тысяч записей, простые выборки начинают занимать секунды вместо миллисекунд.

Если в таблице нет индексов, СУБД выполняет Full Table Scan — перебирает каждую строку в поисках нужной.

Как лечить

Регулярно анализировать медленные запросы.

Если вы часто ищете пользователей по email или заказы по status, эти колонки должны быть проиндексированы в миграциях:

$table->index('status');

3. Выполнение тяжелых задач в синхронном режиме

Типичная ошибка начинающих разработчиков: пользователь оформляет заказ, и в этот же момент сервер:

  • генерирует PDF-счет;
  • обращается к API СДЭК;
  • отправляет email.

В итоге клиент смотрит на крутящийся лоадер 10 секунд.

Как лечить

Использовать очереди (Queues).

Все задачи, которые не нужны для немедленного отображения страницы, должны отправляться в фоновый режим.

В Laravel достаточно добавить интерфейс ShouldQueue к классу Job или Event, и настроить worker (например, через Supervisor и Redis).


4. Игнорирование кэширования

База данных — самое узкое горлышко любого веб-приложения.

Нет смысла при каждом обновлении страницы запрашивать из БД:

  • список меню;
  • контакты в шапке;
  • категории товаров.

Как лечить

Использовать кэширование на уровне приложения.

Laravel поддерживает драйверы Redis и Memcached прямо «из коробки».

$categories = Cache::remember('categories_menu', 3600, function () {
    return Category::active()->get();
});

Этот код возьмет данные из быстрой оперативной памяти сервера (Redis), и только раз в час обновит их из базы данных.


5. Забытые команды оптимизации на Production

На локальном сервере (при разработке) Laravel загружает множество конфигураций динамически.

Если не отключить это на production-сервере, фреймворк будет тратить ресурсы на чтение сотен файлов при каждом запросе.

Как лечить

Во время деплоя проекта обязательно должны выполняться три команды:

php artisan config:cache
php artisan route:cache
php artisan view:cache

Эти команды собирают все настройки, маршруты и шаблоны в единые оптимизированные файлы, ускоряя инициализацию приложения (Time To First Byte) в 2–3 раза.


Выжимаем максимум из вашего проекта

Найти и исправить проблему в готовом коде сложнее, чем написать его с нуля.

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

Техлиды «Команды-А» проведут глубокий аудит вашего проекта:

  • проанализируют архитектуру;
  • найдут «узкие места» в базах данных;
  • настроят отказоустойчивую инфраструктуру.

👉 Заказать бесплатный экспресс-аудит проекта

Задать вопрос

Если у вас возник технический вопрос по нашим статьям или появилась потребность в профессиональной разработке сложного веб-проекта — оставьте свои контакты. Техлид «Команды-А» свяжется с вами, чтобы проконсультировать и помочь найти оптимальное решение.

Нажимая кнопку, вы соглашаетесь с политикой обработки персональных данных.