Web Vitals — это набор ключевых метрик производительности веб-страницы, разработанных для измерения пользовательского опыта. Одной из сложных задач при анализе Web Vitals является корректная интерпретация метрик в зависимости от количества взаимодействий пользователя с элементами страницы. В этой главе рассматривается, как поправка на взаимодействия влияет на расчёт и анализ метрик, а также какие подходы применяются для точного измерения.
FID измеряет задержку от момента первого взаимодействия пользователя (клик, нажатие клавиши, касание экрана) до момента, когда браузер способен начать обработку этого события. Чем больше количество взаимодействий, тем более статистически значимым становится измерение. Однако важно учитывать:
Поправка на количество взаимодействий здесь заключается в масштабировании FID на основе вероятности события первого взаимодействия. Например, если на странице обычно происходит множество быстрых взаимодействий, стандартный FID может недооценивать реальную задержку для большинства пользователей. Решение — учитывать распределение всех взаимодействий в статистическом анализе.
INP — более комплексная метрика, охватывающая все интеракции пользователя, а не только первую. Это делает её чувствительной к количеству взаимодействий:
Алгоритмы Web Vitals рекомендуют взвешивать каждую интеракцию по её длительности и влиянию на общий пользовательский опыт, чтобы результат не искажался редкими, но длительными задержками.
Сбор всех событий интеракций Используется
JavaScript API EventTiming, который позволяет отслеживать
время обработки каждого события. Пример:
new PerformanceObserver((entryList) => {
for (const entry of entryList.getEntries()) {
console.log(entry.processingStart - entry.startTime);
}
}).observe({ type: 'event', buffered: true });
Такой подход позволяет не ограничиваться FID, а учитывать все интеракции.
Агрегация с поправкой на количество взаимодействий
Перцентильное представление данных Для INP и LCP корректнее смотреть 90-й или 95-й перцентиль, а не среднее значение. Поправка на количество интеракций помогает учесть вариативность: страницы с большим количеством интеракций могут иметь редкие, но очень долгие задержки, которые искажали бы среднее.
Библиотека web-vitals в JavaScript предоставляет функции
для сбора LCP, FID и CLS. Для корректного учета интеракций применяются
следующие подходы:
import { getFID, getINP } from 'web-vitals';
// FID с учетом вероятности взаимодействия
getFID((metric) => {
console.log('FID:', metric.value);
console.log('Поправка на количество взаимодействий:', metric.entries.length);
});
// INP, учитывающий все интеракции
getINP((metric) => {
console.log('INP:', metric.value);
console.log('Всего интеракций:', metric.entries.length);
});
Ключевой момент: длина массива entries
отражает количество взаимодействий, участвующих в расчёте метрики. Это
число можно использовать для статистической нормализации и сглаживания
данных.
EventTiming и
библиотеки web-vitals позволяет гибко управлять метриками и
адаптировать их под реальные пользовательские сценарии.Поправка на количество взаимодействий — это инструмент, который делает измерения Web Vitals статистически репрезентативными и устойчивыми к вариативности пользовательского поведения.