Почему сайт тормозит: типичные причины на PHP и WordPress
Когда владелец пишет «сайт тормозит», почти никогда это не одна волшебная кнопка. Обычно это связка из нескольких мелких проблем, которые вместе дают секунды ожидания и срывы в пик.
Ниже — то, что я чаще всего вижу на PHP и WordPress-проектах. Без теории ради теории: так выглядит разбор на практике.
1. Тяжёлые SQL-запросы
Каталог, фильтры, «похожие товары», отчёты в админке — всё это легко превращается в N+1 и полные сканы таблиц. Симптом простой: страница открывается терпимо в тишине и разваливается на акциях или при одновременных заходах.
Что делаю: смотрю медленные запросы, индексы, batch вместо поштучных выборок, кэш там, где данные меняются редко. Иногда хватает точечной правки — без переписывания всего каталога.
2. Плагины и «всё включено»
На WordPress тормоза часто дают не «сама CMS», а десяток плагинов, каждый из которых тянет скрипты, шлёт запросы наружу и греет админку. Особенно больно конструкторы страниц и тяжёлая аналитика на каждой странице.
Подход простой: оставляем то, что реально нужно бизнесу, остальное выносим или пишем тонко под задачу. Кастомная тема без лишнего обычно быстрее любого «универсального» комбайна.
3. Картинки и статика
Оригиналы по 4–8 МБ, отсутствие WebP, ленивой загрузки и нормальных размеров — классика. Страница «тяжёлая» ещё до того, как PHP успел подумать.
Режется быстро: сжатие, правильные srcset, кэш статики на CDN/сервере, отказ от лишних шрифтов и скриптов в шапке.
4. Нет кэша там, где он нужен
Не каждый сайт надо «закэшировать целиком». Но публичные посадочные, карточки, списки и куски HTML, которые не меняются каждую секунду, без кэша зря жгут PHP и MySQL.
Важно не сломать личный кабинет и корзину: кэш страниц — для публичного контура, объектный/фрагментный — где логика сложнее.
5. Пик нагрузки
Сайт может быть «нормальным» в обычный день и умирать в распродажу. Тогда смотрим очередь запросов, блокировки БД, внешние API (оплата, CRM), лимиты хостинга и то, что можно отложить в фон.
Как я обычно начинаю разбор
- Воспроизвести: какая страница, с какой нагрузкой, до/после авторизации.
- Замерить: TTFB vs загрузка статики — это разные миры.
- Найти топ-3 узких места, а не «переписать всё».
- Починить по приоритету эффекта и риска.
Если сайт уже в проде и тормозит на реальных сценариях — напишите, разберём точечно. Часто вытягивается без большого проекта «с нуля».