LCP (Largest Contentful Paint) — это метрика Web Vitals, отражающая время рендеринга самого большого видимого элемента на странице. Она критична для оценки восприятия производительности пользователем, так как отображает момент, когда основной контент становится визуально доступным. LCPAttribution расширяет стандартный подход к измерению LCP, позволяя связывать конкретные ресурсы и события с временем рендеринга крупного контента, что полезно для оптимизации производительности и детального анализа загрузки страницы.
Библиотека Web Vitals предоставляет API для отслеживания LCP и позволяет расширять данные о метрике с помощью атрибуции. LCPAttribution фиксирует, какой ресурс, изображение или текстовый блок в DOM вызвал событие LCP, а также сопоставляет его с конкретными событиями загрузки и рендеринга.
Ключевые свойства объекта LCPAttribution:
<img>, <div> с
текстом или другим визуальным контентом.Эти данные позволяют не только определить момент LCP, но и понять, какой именно контент стал узким местом в производительности страницы.
Для использования LCPAttribution необходимо импортировать Web Vitals
и подписаться на метрику LCP через getLCP. В момент
срабатывания события LCP объект события содержит дополнительную
информацию об атрибуции:
import { getLCP } from 'web-vitals';
getLCP((metric) => {
console.log('LCP:', metric.value);
console.log('Элемент LCP:', metric.attribution?.element);
console.log('URL ресурса:', metric.attribution?.url);
console.log('Время загрузки ресурса:', metric.attribution?.loadTime);
});
Примечания по использованию:
url может быть пустым.loadTime как
undefined.Определение узких мест в производительности С помощью LCPAttribution можно выявлять ресурсы, которые замедляют визуальное отображение. Например, крупные изображения с долгой загрузкой, тяжелые шрифты или блоки с внешними виджетами.
Оптимизация загрузки изображений и шрифтов
Атрибуция указывает URL и размер ресурса. Это позволяет определить,
какие изображения стоит предзагружать или использовать
loading="lazy" для второстепенных элементов.
Анализ влияния сторонних скриптов Если LCP формируется элементом, который появляется после выполнения стороннего скрипта, атрибуция позволяет связать его рендер с конкретным JavaScript-файлом.
element, url, loadTime и
renderTime.Web Vitals позволяет использовать observer options для более детального контроля:
getLCP((metric) => {
// Фильтрация по тегу элемента
if (metric.attribution.element.tagName === 'IMG') {
console.log('LCP сформирован изображением:', metric.attribution.url);
}
}, { reportAllChanges: true });
Опция reportAllChanges обеспечивает регистрацию всех
изменений LCP, а не только финального значения, что критично для анализа
динамического контента и SPAs.
LCPAttribution превращает абстрактную метрику LCP в практический инструмент диагностики и оптимизации, предоставляя полную картину того, какие элементы и ресурсы формируют визуальное восприятие страницы.