- html5css.dev
- SEO
- Мобильное SEO
- Скорость сайта
- Производительность сайта и способы её измерения
Производительность сайта и способы её измерения
Скорость перестала измеряться «временем загрузки». Сегодня это три метрики Core Web Vitals — LCP, INP и CLS — и принципиальная разница между лабораторными и полевыми данными.
Три метрики Core Web Vitals
| Метрика | Что измеряет | Хорошо | Требует внимания | Плохо |
|---|---|---|---|---|
| LCP Largest Contentful Paint | Время до отрисовки самого крупного элемента первого экрана | ≤ 2,5 с | 2,5–4,0 с | > 4,0 с |
| INP Interaction to Next Paint | Задержка отклика на действия пользователя за всю сессию | ≤ 200 мс | 200–500 мс | > 500 мс |
| CLS Cumulative Layout Shift | Насколько «прыгает» вёрстка во время загрузки | ≤ 0,1 | 0,1–0,25 | > 0,25 |
Оценка идёт по 75-му перцентилю: чтобы метрика считалась хорошей, у трёх из четырёх визитов значение должно укладываться в порог. Мобильные и десктоп оцениваются раздельно — и почти всегда мобильные хуже.
LCP — что именно является «крупным элементом»
Обычно это главная картинка, обложка статьи или крупный заголовок. Типичные причины плохого LCP: медленный ответ сервера (TTFB), блокирующий CSS и шрифты, тяжёлое изображение без современного формата, ленивая загрузка, случайно применённая к картинке первого экрана.
INP — почему он строже FID
FID измерял задержку только первого взаимодействия и только до начала обработки. INP берёт худшие взаимодействия за всю сессию и считает время до следующей отрисовки — то есть до момента, когда пользователь увидел результат своего клика. Тяжёлые обработчики событий, длинные задачи в основном потоке и перегруженные сторонние скрипты видны в INP гораздо честнее.
CLS — самая дешёвая метрика для исправления
Почти всегда чинится разметкой: заданные размеры изображений и iframe, зарезервированное
место под баннеры и виджеты, отказ от вставки блоков над уже отрисованным контентом,
font-display: optional или swap вместе с size-adjust.
width/height у всех изображений и
резервирование места под рекламные блоки часто убирает CLS за один спринт —
без единой строчки серверного кода.
Лабораторные и полевые данные
| Лабораторные | Полевые | |
|---|---|---|
| Источник | Lighthouse, WebPageTest, DevTools | CrUX — реальные визиты пользователей Chrome |
| Где смотреть | PageSpeed Insights (верхний блок), DevTools → Lighthouse | Search Console → Основные интернет-показатели, PageSpeed Insights (нижний блок) |
| Для чего | Отладка: показывает конкретные причины и что чинить | Оценка: именно эти данные использует Google |
| Ограничение | Одна синтетическая конфигурация, INP не измеряется | Задержка 28 дней, нужен минимальный трафик |
Практическое правило: решение о том, есть ли проблема, принимается по полевым данным; решение о том, что именно чинить — по лабораторным.
Инструменты
- Google Search Console → Основные интернет-показатели. Главный отчёт: группирует URL по типам страниц и показывает динамику. Начинайте здесь.
- PageSpeed Insights. Полевые данные CrUX сверху, лабораторный Lighthouse снизу — на одной странице.
- Chrome DevTools → Performance. Профилирование длинных задач, поиск причин плохого INP.
- Библиотека
web-vitals. Собственный сбор метрик с реальных пользователей и отправка в аналитику. Единственный способ увидеть метрики раньше, чем через 28 дней. - CrUX Dashboard / BigQuery. История по домену и сравнение с конкурентами.
- WebPageTest. Тонкие сценарии: конкретная география, тип сети, устройство.
Сбор реальных метрик своими руками
<script type="module">
import {onLCP, onINP, onCLS} from 'https://unpkg.com/web-vitals@4?module';
function send(metric) {
navigator.sendBeacon('/collect', JSON.stringify({
name: metric.name, // LCP | INP | CLS
value: metric.value,
id: metric.id,
path: location.pathname
}));
}
onLCP(send);
onINP(send);
onCLS(send);
</script>
Дальше данные складываются в вашу аналитику, и вы видите 75-й перцентиль по типам страниц уже завтра, а не через месяц.
С чего начинать оптимизацию
- Откройте отчёт Core Web Vitals в Search Console и найдите группу URL с наибольшим числом «плохих» адресов.
- Возьмите типовой URL из группы и прогоните через PageSpeed Insights.
- Начните с метрики, которая проваливается сильнее всего. Обычно порядок такой: CLS (дёшево) → LCP (средне) → INP (дорого).
- Исправьте на шаблоне, а не на одной странице — эффект получите на всей группе сразу.
- Через 28 дней проверьте полевые данные снова.
Конкретные приёмы разбираются в следующих уроках главы: минификация, оптимизация изображений, многоуровневое кеширование и CDN.
Частые вопросы
Что заменило метрику FID?
INP (Interaction to Next Paint). Google перевёл INP в статус стабильной метрики Core Web Vitals в марте 2024 года, FID был выведен из состава. INP оценивает отзывчивость на протяжении всей сессии, а не только на первое взаимодействие.
Какие значения считаются хорошими?
LCP — до 2,5 секунды, INP — до 200 миллисекунд, CLS — до 0,1. Оценка идёт по 75-му перцентилю реальных визитов отдельно для мобильных и десктопа.
Почему Lighthouse показывает 100, а Search Console ругается?
Lighthouse — лабораторный замер на одной синтетической конфигурации. Search Console показывает полевые данные CrUX: реальные пользователи, реальные устройства и сети. Ориентироваться нужно на полевые.
Насколько сильно Core Web Vitals влияют на позиции?
Это фактор ранжирования, но слабый по сравнению с релевантностью содержания. Его роль — тай-брейк между сопоставимыми по качеству страницами. Основной выигрыш от скорости — поведенческий: меньше отказов и больше конверсий.
Вся глава «Скорость сайта» — 7 уроков
- Производительность сайта и способы её измерения
- Минификация контента
- Сжатие: Brotli и GZIP
- Оптимизация изображений
- Протоколы HTTP/2 и HTTP/3
- Настройка многоуровневого кеширования
- Использование CDN