Основные концепции RUM и
CrUX
RUM (Real User Monitoring) представляет собой
методику измерения производительности сайта непосредственно в браузерах
реальных пользователей. RUM позволяет получать точные данные о том, как
страница загружается, реагирует и становится интерактивной в различных
условиях сети, устройствах и географических регионах.
CrUX (Chrome User Experience Report) — это открытый
набор агрегированных данных о пользовательском опыте, собранных
браузером Chrome. Данные CrUX основаны на показателях реальных
пользователей, но в отличие от собственного RUM, они агрегированы и
анонимизированы, что позволяет видеть тренды для широких сегментов
аудитории.
Показатели Web Vitals в RUM
и CrUX
Core Web Vitals — это ключевые метрики, на которых
строится измерение пользовательского опыта:
- LCP (Largest Contentful Paint) — измеряет время
рендеринга самого большого видимого блока контента.
- FID (First Input Delay) — задержка между первой
интеракцией пользователя и реакцией страницы.
- CLS (Cumulative Layout Shift) — кумулятивное
смещение контента при загрузке.
В RUM эти метрики собираются на уровне конкретного пользователя, что
позволяет учитывать индивидуальные условия, такие как скорость сети и
производительность устройства. В CrUX метрики представлены в виде
процентных распределений и категорий («Good», «Needs Improvement»,
«Poor»), что отражает усреднённое поведение аудитории.
Настройка собственного
RUM с Web Vitals
Для интеграции Web Vitals в собственный RUM используется официальный
пакет web-vitals:
import {getLCP, getFID, getCLS} from 'web-vitals';
getLCP(metric => {
sendToAnalytics('LCP', metric.value);
});
getFID(metric => {
sendToAnalytics('FID', metric.value);
});
getCLS(metric => {
sendToAnalytics('CLS', metric.value);
});
Ключевые моменты:
- Метрики должны отправляться асинхронно, чтобы не блокировать
основной поток страницы.
- Важно учитывать браузеры и устройства, так как производительность
может сильно различаться.
- RUM позволяет детализировать данные по сессиям, страницам и
географии пользователя.
Сравнение данных RUM и CrUX
RUM и CrUX дополняют друг друга:
- Granularity (Детализация): RUM предоставляет
метрики на уровне отдельного пользователя, CrUX — на уровне
агрегированных сегментов.
- Timeframe (Временные рамки): RUM позволяет видеть
данные в реальном времени или за последние сессии, CrUX — за более
длительные периоды (например, 28 дней).
- Segmentation (Сегментация): В RUM можно
сегментировать данные по устройствам, сетям и страницам, а CrUX
сегментирует только по крупным категориям устройств и сетей.
Использование этих данных совместно позволяет:
- Проверять соответствие собственного RUM глобальным трендам.
- Обнаруживать аномалии и выявлять сегменты пользователей с плохой
производительностью.
- Оптимизировать страницы с учётом глобальных и локальных данных
одновременно.
Интеграция CrUX с
собственными данными
CrUX предоставляет API для выгрузки агрегированных данных:
fetch('https://chromeuxreport.googleapis.com/v1/records:queryRecord', {
method: 'POST',
body: JSON.stringify({
url: 'https://example.com',
formFactor: 'PHONE'
})
})
.then(response => response.json())
.then(data => console.log(data.record.metrics.LARGEST_CONTENTFUL_PAINT));
Сравнивая эти значения с RUM-метриками:
- Можно выявить несоответствия между поведением отдельного
пользователя и трендом аудитории.
- Понять, какие изменения реально улучшат глобальный опыт, а какие
будут локальными улучшениями.
Практические рекомендации
- Синхронизация метрик: Использовать одинаковые
единицы измерения и временные рамки при сравнении RUM и CrUX.
- Анализ распределений: RUM может показывать медиану
и перцентили для каждого пользователя, CrUX предоставляет 75-й и 95-й
перцентили, что важно для оценки худшего сценария.
- Отслеживание изменений: После оптимизаций
сравнивать RUM и CrUX, чтобы убедиться, что улучшения видны и
глобально.
- Агрегация и визуализация: Для крупных сайтов
строить дашборды, где показатели RUM и CrUX отображаются одновременно,
чтобы быстро выявлять отклонения.
Выводы для оптимизации
Связка собственного RUM и CrUX позволяет:
- Получать точные данные о производительности на уровне отдельных
пользователей.
- Контролировать глобальные тренды и соответствие стандартам Web
Vitals.
- Делать обоснованные решения по оптимизации UX на основе сочетания
локальных и агрегированных данных.
Эффективная интеграция этих двух источников обеспечивает всестороннее
понимание производительности и пользовательского опыта.