Вернуться к списку Вернуться к статьям

Почему сайт медленно загружается: как отличить проблему хостинга, кода, базы данных и изображений

Фраза «сайт тормозит» не помогает найти неисправность. Одна и та же задержка для посетителя может возникать в разных местах: сервер долго собирает страницу, браузер ждёт тяжёлый скрипт, база данных выполняет неудачный запрос, а на мобильном устройстве загружается слишком крупное изображение. Исправление выбирают после замера, а не по первому предположению.

Начните с одного сценария: откройте конкретный URL как гость, перейдите в каталог, выполните поиск или отправьте форму. Для личного кабинета нужен отдельный сценарий после авторизации. Так техническая задача превращается в набор наблюдаемых фактов: где возникла задержка, что её вызывает и кто отвечает за исправление.

Сначала собрать воспроизводимый замер

Для каждого проблемного действия фиксируют URL, дату и время, устройство, браузер, тип соединения и результат. Проверка главной страницы не заменяет проверку карточки товара, поиска или личного кабинета: у них разный состав данных, шаблоны и запросы.

Диагностика скорости: Сервер, Код и база, Медиа
Диагностика скорости: Сервер, Код и база, Медиа

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

Минимальный набор материалов для диагностики:

  • водопад сетевых запросов из браузера;
  • время ожидания первого ответа от сервера;
  • размер HTML, скриптов, стилей и изображений;
  • коды ответов и сообщения об ошибках;
  • время выполнения медленных серверных операций, если его пишут логи;
  • снимок состояния базы и очередей на момент инцидента, когда доступ к ним есть.

Инструменты оценки производительности полезны как стартовая точка, но не как приговор. Лабораторный тест не видит закрытые разделы, персональные данные в сессии и работу конкретного внешнего API. Его результаты нужно сопоставлять с сетевым журналом и серверными логами.

Когда подозревать хостинг или инфраструктуру

Инфраструктура заслуживает проверки, если задержка до первого ответа растёт на разных страницах, возникают ошибки соединения, а проблема повторяется в одно и то же время или при росте параллельных обращений. Полезны данные о кодах 5xx, исчерпании ресурсов, времени работы процессов, состоянии сети и доступности базы.

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

Код, стили и сторонние скрипты

Браузер может быстро получить HTML, но задержаться на выполнении JavaScript. Частые причины — большой клиентский пакет, длинные синхронные задачи, лишняя инициализация на каждой странице, тяжёлые таблицы и подключённые без проверки виджеты аналитики, чата или рекламы.

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

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

База данных и серверный код

Медленная страница с каталогом, фильтром или персональными данными часто зависит от базы. Подозрительны запросы, которые возвращают слишком много строк, сортируют без индекса, повторяются в цикле или запускаются для каждого элемента списка. Это не видно по внешнему тесту без логов и профилирования.

Нужно зафиксировать маршрут, параметры запроса и время его выполнения. После этого разработчик может посмотреть план выполнения, объём данных и индексы. Добавление индекса иногда помогает, но оно не универсально: индекс меняет скорость чтения и стоимость записи, а его польза зависит от реальных условий выборки.

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

Изображения и другие медиафайлы

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

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

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

Внешние сервисы и авторизованные разделы

Виджет чата, карта, платёжная форма, система аналитики или API доставки добавляют сетевые зависимости. Если удалённый сервис отвечает с задержкой, сайт может зависнуть только на части страниц или в определённом регионе. Для каждого вызова полезно задать тайм-аут, понятную обработку ошибки и решение: можно ли открыть страницу без этого сервиса.

Авторизованный раздел нельзя оценивать только как публичную страницу. Там работают сессии, права, персональные выборки и операции, которые нельзя положить в общий кеш. Замеры выполняют под тестовой учётной записью с безопасными данными. Логи не должны содержать пароли, токены и полные значения полей формы.

Порядок работ после диагностики

Сначала устраняют ошибку, которая мешает ключевому действию: открытию страницы, поиску, входу или отправке заявки. Затем выбирают одно изменение, связывают его с измерением и проверяют на том же URL и наборе условий. Массовый набор правок затрудняет поиск причины и откат.

Результат принимают не по одному баллу сервиса проверки. Сравнивают время ответа, скорость появления основного содержимого и работоспособность сценария до и после. Затем повторяют тесты форм, авторизации, фильтра, аналитики, интеграций и публикации контента. Если менялись кеш или база данных, нужен отдельный сценарий обновления и отката.

Что передать подрядчику

Хорошее описание проблемы занимает одну страницу, но содержит достаточно деталей для первого шага. Укажите адрес, сценарий, время наблюдения, устройство, сеть, ожидаемое и фактическое поведение. Добавьте сетевой журнал или скриншот с сохранёнными техническими данными, но удалите из него персональные сведения и токены доступа.

Договоритесь о критерии завершения заранее. Например: определённый список URL и действий проверяют на согласованных устройствах и сетях, а критичные формы и интеграции проходят повторный тест. Числовые целевые значения нельзя переносить между проектами без измерения исходного состояния и понимания ограничений инфраструктуры.

Часто задаваемые вопросы

Можно ли понять причину по одному скриншоту отчёта о скорости?

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

Когда подключать хостинг?

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

Нужно ли перевести все изображения в один формат?

Не обязательно. Сначала сопоставляют фактический размер на экране, вес файла и способ загрузки. Формат — один из параметров наряду с адаптивными вариантами, сжатием и приоритетом загрузки.

Почему личный кабинет работает медленнее публичного раздела?

После входа сайт может выполнять персональные запросы и проверки прав, которые нельзя обслуживать общим кешем. Такой маршрут измеряют отдельно под тестовой учётной записью и проверяют серверную логику вместе с базой данных.

Как принять результат работ по ускорению?

Сравните один и тот же набор URL, устройств и действий до и после изменения. Помимо скорости проверьте формы, поиск, авторизацию, изображения и критичные внешние сервисы. Это снижает риск получить быстрый, но неполный сценарий.