Медленный сайт на практике - где искать и что чинить
Скорость - подтема на 19 вопросов из собранных. Почти все они начинаются одной фразой: сайт тормозит, а причина непонятна.
Что общего у этих задач
Время ответа складывается из двух разных величин: ожидания свободного процесса и работы самого кода. Первое лечится настройками сервера и кэшем, второе - правкой запросов и шаблонов. Пока они не разделены, любые меры случайны.
Кэшей в платформе несколько, и они вложены. Кэш данных внутри компонента, кэш результата компонента и композитный кэш всей страницы работают одновременно. Правка, «которая не появляется на сайте», застревает на одном из этих уровней.
Медленно под нагрузкой и медленно всегда - разные диагнозы. Первое означает нехватку процессов или памяти, второе - тяжёлый код на каждой странице. Симптомы похожи, а лечение противоположное.
Замер идёт до правок и после них. Без числа до работы любое ускорение остаётся ощущением, а заказчик оценивает результат по секундам, а не по списку сделанного.
Решения подтемы
-
Сайт тормозит: разбор причин - разделение времени, уровни кэша, база и внешние вызовы.
-
Правка не видна на сайте: какой кэш сбросить - три уровня кэша, композит, кэш браузера, точечный сброс.
-
Проверка сайта перед акцией: нагрузка, узкие места, план дня - базовые замеры, нагрузка на копии, план переключателей.
-
Кэш не срабатывает: страница собирается заново каждый раз - ключ кэша, группы, настройки, права, частый сброс.
-
Нагрузочное тестирование: сценарий, расчёт, чтение результатов - расчёт пика и потоков, цепочки, инструменты, пороги нормы.
-
Тегированный кэш: сброс по изменению данных, а не по расписанию - управляемый кэш, регистрация тегов, привязка к таблице.
-
Быстрые картинки на витрине: размеры, ленивая загрузка, WebP - копии под место вывода, отсрочка, набор размеров, формат.
-
Ускорение карточки товара: состав блоков, отложенная загрузка - замер состава, отложенные блоки, кэш с тегами, картинки, проверка.
-
Акселератор PHP: размер кэша, сброс при выкладке - кэш байт-кода, размеры под платформу, боевой против стенда, сброс.
Частые вопросы
С чего начинать разбор медленного сайта?
С разделения времени ответа на ожидание и выполнение. Журнал веб-сервера показывает первое, журнал медленных запросов PHP - второе.
Почему включённый кэш не помогает?
Кэш компонента не спасает, если тормозит не компонент, а внешний вызов или запрос вне его. Кэшируется только то, что внутри области кэширования.
Композит ускоряет всё подряд?
Нет, он отдаёт готовую страницу из файла, но персональные блоки всё равно собираются на каждом запросе. Выигрыш зависит от их числа.
Что смотреть в первую очередь на живом сайте?
Число процессов PHP, память и журнал медленных запросов. Эти три показателя закрывают большинство случаев без профилирования кода.
Связанные темы
- Производительность - устройство скорости целиком
- Кеширование - уровни кэша и их сброс
- Композитный сайт - кэш страницы целиком
- Раздел Производительность