Перейти к основному содержимому

Метрики производительности веб-страницы

Разработчику

Зачем отдельный справочник

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

Ниже — девять показателей, которые полезно держать под рукой при разборе загрузки страницы. Они дополняют Core Web Vitals (LCP, INP, CLS) — те ориентированы на полевые данные и SEO, а базовые метрики помогают локализовать узкое место в DevTools и в отчётах Lighthouse.

Сетевой контекст (RTT, DNS, TLS) для API — в Сеть для диагностики бэкенда. Цепочка рендеринга в браузере — в архитектуре веб-приложений.


Девять метрик — краткая таблица

МетрикаЧто измеряетТипичный вопрос
Load TimeВремя до полной загрузки страницы«Почему спиннер крутится так долго?»
TTFBДо первого байта ответа сервера«Сервер медленный или сеть?»
Request CountЧисло HTTP-запросов на страницу«Слишком много мелких файлов?»
DOM Content LoadedHTML разобран, DOM готов«Когда можно запускать свой JS?»
Above-the-Fold LoadКонтент в видимой области экрана«Когда пользователь видит «шапку»?»
FCPПервый видимый контент на экране«Когда перестаёт быть белый экран?»
Page SizeСуммарный вес всех ресурсов«Страница раздулась?»
RTTВремя запроса туда и обратно«География и канал влияют?»
Render-blocking resourcesCSS/JS, задерживающие отрисовку«Что держит пустой экран?»

Как метрики укладываются во времени

Упрощённая хронология одной навигации:

Порядок на реальной странице может отличаться: FCP иногда наступает раньше DOMContentLoaded, если критический CSS уже применён, а тяжёлый JS ещё не выполнен.


Сеть и сервер

RTT (Round-Trip Time)

RTT — время, за которое сигнал доходит от клиента до сервера и обратно (один «круг» без учёта полной передачи тела ответа). Зависит от расстояния, маршрута, типа сети (Wi‑Fi, LTE), загрузки канала.

Высокий RTT увеличивает задержку каждого нового TCP-соединения и фазы TLS. Для API с коротким телом ответа RTT часто важнее, чем мегабайты JSON. Подробнее — в таблице метрик сетевой диагностики.

TTFB (Time To First Byte)

TTFB — интервал от отправки HTTP-запроса до получения первого байта ответа. Показывает, как быстро сервер (и всё на пути — DNS, CDN, балансировщик, БД) начинает отвечать.

Высокий TTFB при низком времени обработки на originВысокий TTFB и долгий upstream
CDN, DNS, географическая удалённость, TLSМедленный бэкенд, тяжёлые запросы к БД

В Chrome DevTools (вкладка Network) TTFB виден в колонке Waiting (TTFB) у документа. С сервера удобно снимать через curl -w — пример в статье про сеть для бэкенда.


Объём и число запросов

Request Count

Request Count — сколько отдельных HTTP-запросов браузер делает, чтобы отрисовать страницу (HTML, CSS, JS, изображения, шрифты, аналитика, виджеты).

Много мелких запросов на HTTP/1.1 без keep-alive давали очередь; HTTP/2 и HTTP/3 снимают часть проблем за счёт мультиплексирования, но каждый запрос всё равно стоит CPU и иногда отдельного TLS. Сокращение числа запросов — объединение файлов, спрайты (реже сейчас), inline критического CSS, отказ от лишних трекеров.

Page Size

Page Size (вес страницы) — суммарный размер переданных ресурсов: HTML, стили, скрипты, изображения, видео, шрифты. Средний вес коммерческих лендингов за последние годы рос (много изображений, JS-бандлов, шрифтов).

Сжатие gzip / Brotli, современные форматы изображений (WebP, AVIF), ленивая загрузка и code splitting напрямую бьют по Page Size. В DevTools — колонка Size и итог внизу панели Network.


Парсинг и отрисовка в браузере

DOM Content Loaded

Событие DOMContentLoaded наступает, когда браузер полностью разобрал HTML и построил DOM. Он не ждёт окончания загрузки стилей, картинок и подфреймов.

Для разработчика это маркер: «каркас страницы на месте, можно вешать обработчики и читать узлы». Скрипты с атрибутом defer выполняются до DOMContentLoaded; с async — как только скачаются. Подробнее про defer / async — в разметке HTML.

Render-blocking resources

Ресурсы, блокирующие рендеринг — обычно CSS (<link rel="stylesheet"> без media, не подходящего под экран) и синхронный JavaScript в <head> без defer/async. Пока они не загружены и не обработаны, браузер откладывает отрисовку значимой части страницы.

Приёмы снижения блокировок:

  • критический CSS — inline в <head> или отдельный маленький файл;
  • defer / async для скриптов;
  • media="print" для некритичных стилей (с осторожностью — см. таблицу в статье по HTML);
  • перенос некритичного JS в конец <body> или динамический import().

Связь с Critical Rendering Path и приёмами (code splitting, preload, tree shaking) — в оптимизации загрузки и рендеринга.

First Contentful Paint (FCP)

FCP — момент, когда пользователь впервые видит контент: текст, фон, SVG, изображение (не только индикатор загрузки). Отвечает на вопрос «страница вообще ожила?».

FCP зависит от TTFB, блокирующих ресурсов и объёма критического пути. В Lighthouse и DevTools Performance FCP — одна из ключевых отметок на таймлайне. Для полевых данных смотрят CrUX и отчёты Search Console.

Time to Above-the-Fold Load

Above-the-fold — область экрана без прокрутки. Время её загрузки — субъективно важный показатель для лендингов и статей: пользователь решает «остаться или уйти» по первому экрану.

Метрика близка к LCP (Largest Contentful Paint) из Core Web Vitals, но above-the-fold шире по смыслу в маркетинге: сюда входят все видимые элементы, а LCP фиксирует один самый крупный элемент. Для SEO и ранжирования ориентируйтесь на LCP, INP, CLS.

Load Time

Load Time (событие load на window) — страница и все её зависимости по атрибуту load (изображения, iframes и т.д.) завершили загрузку. Это «всё скачано», но не обязательно «всё интерактивно» — тяжёлый JS после load может ещё блокировать основной поток.

Для SPA после первого load жизнь страницы продолжается: подгружаются чанки, данные API, гидратация React. Поэтому Load Time полезен как верхняя граница сетевой фазы, а отзывчивость смотрят через INP / TTI.


Core Web Vitals — следующий уровень

Базовая метрикаСвязь с Core Web Vitals
TTFB, RTTВлияют на LCP (поздний первый контент)
Render-blocking, FCPПодготовка к хорошему LCP
Page Size, Request CountКосвенно LCP и INP
Стабильность вёрстки при загрузке медиаCLS

Google выделяет три полевые метрики: LCP, INP (раньше FID), CLS. Их пороги и влияние на SEO разобраны в статье про SEO.


Где смотреть на практике

ИнструментЧто даёт
DevTools → NetworkTTFB, размер, число запросов, водопад
DevTools → PerformanceFCP, Main thread, long tasks
LighthouseСводка Performance + рекомендации
PageSpeed InsightsЛабораторные + полевые (CrUX) данные
curl -wTTFB с сервера / CI

Разбор вкладок DevTools и Lighthouse — в Chrome DevTools и бенчмарках.

Мини-чеклист при жалобе на скорость
  1. Документ в Network — высокий TTFB?
  2. Много запросов или большой Page Size?
  3. В Performance — долгий простой до FCP (блокирующие CSS/JS)?
  4. После отрисовки — скачки вёрстки (CLS) или лаг по клику (INP)?

См. также

См. также

Другие статьи этого же раздела в боковом меню (как на странице "О разделе").