Web Vitals — это набор ключевых показателей производительности
веб-страниц, разработанных Google для оценки пользовательского опыта. В
основе лежат три критических метрики: Largest Contentful Paint
(LCP), First Input Delay (FID) и
Cumulative Layout Shift (CLS). Эти метрики позволяют
измерять скорость загрузки контента, интерактивность страницы и
визуальную стабильность интерфейса.
- Largest Contentful Paint (LCP) отражает время от
начала загрузки страницы до момента отображения самого большого видимого
элемента (изображения, блока текста) в viewport. Хорошее значение LCP —
до 2,5 секунд.
- First Input Delay (FID) измеряет задержку между
первым взаимодействием пользователя (клик, нажатие клавиши, сенсорное
событие) и моментом, когда браузер способен обработать это событие.
Оптимально — до 100 мс.
- Cumulative Layout Shift (CLS) показывает суммарное
смещение элементов страницы во время загрузки. Чем ниже значение CLS,
тем стабильнее страница; оптимум — меньше 0,1.
Дополнительно используются метрики First Contentful Paint
(FCP) и Interaction to Next Paint (INP) для
более детального анализа опыта пользователя.
Подключение
библиотеки Web Vitals в проекте
Для работы с Web Vitals существует официальная библиотека
web-vitals, которая упрощает сбор и отправку метрик:
import { getCLS, getFID, getLCP, getFCP, getTTFB } from 'web-vitals';
// Отправка метрик на сервер аналитики
function sendToAnalytics(metric) {
const body = JSON.stringify(metric);
navigator.sendBeacon('/analytics', body);
}
getCLS(sendToAnalytics);
getFID(sendToAnalytics);
getLCP(sendToAnalytics);
getFCP(sendToAnalytics);
getTTFB(sendToAnalytics);
Особенности использования:
- Метрики собираются асинхронно, не блокируя загрузку страницы.
navigator.sendBeacon позволяет отправлять данные на
сервер даже при закрытии страницы.
- Метрики возвращаются в объекте с полями
name,
value, id и entryType.
Вкладка Performance в DevTools предоставляет
подробный анализ работы страницы в реальном времени. Основные элементы
интерфейса:
- Record/Stop — кнопки начала и остановки записи
профиля производительности.
- Flame Chart — визуальное представление стека
вызовов JavaScript и событий рендеринга.
- Summary и Timings — отображают ключевые метрики
загрузки и рендеринга страницы.
Этапы анализа:
- Запись профиля страницы: включение записи и
взаимодействие с сайтом для имитации реального опыта пользователя.
- Анализ LCP и FCP: поиск на Flame Chart блоков,
соответствующих рендерингу крупных элементов или текста.
- Определение FID: оценка времени между событием
пользователя и выполнением соответствующего обработчика.
- CLS и визуальные сдвиги: вкладка Layout Shift
позволяет видеть элементы, которые изменяют свои позиции при
загрузке.
Chrome DevTools предоставляет возможность напрямую анализировать Web
Vitals через Performance Insights:
- Включение метрик Web Vitals в записи профиля.
- Отображение LCP, FID, CLS и других показателей в таймлайне.
- Сравнение различных сессий для выявления проблемных участков.
Практические рекомендации:
- Использовать фильтры по типу событий (
Layout,
Paint, Script) для быстрого выявления узких
мест.
- Проверять метрики при разных условиях сети и на разных
устройствах.
- Отслеживать долгие задачи (
Long Tasks) для сокращения
FID.
Советы по оптимизации метрик
- LCP: уменьшение размеров изображений, использование
lazy-loading, оптимизация критического CSS и JavaScript.
- FID: минимизация блокирующего JavaScript, разбиение
больших скриптов на мелкие задачи, применение
requestIdleCallback.
- CLS: установка фиксированных размеров для
изображений и элементов, избегание динамических вставок без
резервирования пространства.
Использование Web Vitals совместно с DevTools позволяет не просто
измерять производительность, но и визуально соотносить метрики с
конкретными действиями и элементами страницы, что делает процесс
оптимизации более целенаправленным и точным.