Функция onLCP является частью
библиотеки Web Vitals и используется для измерения
показателя Largest Contentful Paint (LCP) — времени, за
которое на экране пользователя отображается самый крупный элемент
контента страницы. LCP является критическим показателем
производительности и напрямую влияет на оценку пользовательского
опыта.
Для использования функции необходимо подключить библиотеку Web Vitals
и импортировать onLCP:
import { onLCP } from 'web-vitals';
Вызов функции onLCP выглядит следующим образом:
onLCP(callback, reportAllChanges);
callback — функция, которая будет вызвана при измерении
LCP.reportAllChanges — необязательный булевый параметр,
определяющий, нужно ли получать все изменения LCP до окончательного
значения. По умолчанию false.callbackcallback принимает один объект с информацией о метрике.
Основные поля этого объекта:
name — название метрики, в данном
случае всегда "LCP".
value — числовое значение LCP в
миллисекундах. Отражает время до рендеринга наибольшего видимого
элемента.
id — уникальный идентификатор
метрики для текущей сессии.
entries — массив объектов
PerformanceEntry, предоставляющий полные данные о событиях
рендеринга.
rating — строковое значение,
отражающее категорию производительности:
"good" — LCP меньше 2.5 секунд."needs-improvement" — LCP от 2.5 до 4 секунд."poor" — LCP больше 4 секунд.Пример использования:
onLCP(metric => {
console.log(metric.name); // "LCP"
console.log(metric.value); // 2345.23
console.log(metric.rating); // "needs-improvement"
});
reportAllChangesПо умолчанию LCP фиксируется только один раз — когда элемент
считается окончательным. Если передать true в
reportAllChanges, callback будет вызываться каждый раз при
обновлении наибольшего элемента контента, что полезно для анализа
динамических страниц:
onLCP(metric => {
console.log(metric.value);
}, true);
В таком режиме объект метрики будет содержать актуальные значения LCP на каждом этапе загрузки, пока страница полностью не загрузится.
entriesПоле entries содержит объекты типа
LargestContentfulPaint с подробными данными:
startTime — время появления элемента
на экране в миллисекундах.renderTime — момент, когда элемент был
отрисован браузером.loadTime — время полной загрузки
элемента (для изображений и видео).size — размер элемента в
пикселях.element — ссылка на DOM-элемент,
который считается крупнейшим на момент измерения.Эта информация позволяет точно определить, какой элемент страницы влияет на показатель LCP, и оптимизировать его загрузку и рендеринг.
onLCP(metric => {
sendToAnalytics(metric);
});
onLCP(metric => {
console.log(`Текущее значение LCP: ${metric.value}`);
}, true);
onLCP(metric => {
console.log(`Крупнейший элемент:`, metric.entries[0].element);
});
<link rel="preload"> для крупных
элементов, чтобы ускорить их загрузку.Функция onLCP предоставляет детальную информацию о том,
как быстро пользователи видят основной контент страницы. Использование
параметра reportAllChanges вместе с полем
entries позволяет проводить глубокий анализ и точечно
оптимизировать производительность.