Web Vitals — это набор метрик, измеряющих пользовательский опыт на веб-странице. Важнейшие показатели, такие как Largest Contentful Paint (LCP), First Input Delay (FID) и Cumulative Layout Shift (CLS), зависят не только от внутренней оптимизации страницы, но и от условий, в которых пользователь взаимодействует с сайтом. Одним из ключевых факторов является тип соединения клиента с сетью. Понимание и сегментация метрик по типу соединения позволяет выявлять узкие места производительности для различных сценариев использования.
В современных браузерах доступ к информации о сети реализован через
API Network Information:
if ('connection' in navigator) {
const connection = navigator.connection || navigator.mozConnection || navigator.webkitConnection;
console.log(connection.effectiveType); // 'slow-2g', '2g', '3g', '4g'
console.log(connection.downlink); // скорость в Мбит/с
console.log(connection.rtt); // задержка в мс
}
Основные свойства:
effectiveType — тип соединения с точки зрения браузера,
учитывая не только стандарт (2G, 3G, 4G), но и фактическую
производительность сети.downlink — примерная скорость загрузки.rtt — оценка задержки (round-trip time) для передачи
данных.saveData — булево значение, указывающее, активирован ли
режим экономии трафика.Эти свойства позволяют динамически адаптировать измерения Web Vitals под конкретные условия соединения.
Для анализа Web Vitals в зависимости от типа соединения можно
использовать библиотеку web-vitals.
Пример интеграции с сегментацией:
import {getLCP, getFID, getCLS} from 'web-vitals';
function reportMetric(metric) {
const connectionType = navigator.connection ? navigator.connection.effectiveType : 'unknown';
console.log(`[${connectionType}] ${metric.name}: ${metric.value}`);
}
getLCP(reportMetric);
getFID(reportMetric);
getCLS(reportMetric);
Особенности сегментации:
effectiveType позволяет сгруппировать
пользователей по скорости соединения. Например, пользователи с
2g часто испытывают задержки в загрузке крупных
изображений.Largest Contentful Paint (LCP)
preload и lazy-loading
критична для пользователей с низкой пропускной способностью.First Input Delay (FID)
requestIdleCallback и минимизация
синхронного JS снижает FID, особенно на 3G и 2G.Cumulative Layout Shift (CLS)
Пример хранения данных:
function saveMetric(metric) {
const connectionType = navigator.connection ? navigator.connection.effectiveType : 'unknown';
const metricData = {
name: metric.name,
value: metric.value,
connectionType: connectionType,
timestamp: Date.now()
};
// отправка на сервер
fetch('/api/metrics', {
method: 'POST',
body: JSON.stringify(metricData),
headers: { 'Content-Type': 'application/json' }
});
}
Сегментация по типу соединения позволяет внедрять адаптивные стратегии:
defer и динамического импорта для пользователей на
2G/3G.Эти подходы обеспечивают улучшение метрик Web Vitals и создают более стабильный пользовательский опыт независимо от типа соединения.
Сегментация Web Vitals по типу соединения — это не просто аналитика, а инструмент для адаптивного управления производительностью. Она позволяет:
Правильное использование информации о соединении в сочетании с Web Vitals дает глубокое понимание того, как реальные пользователи взаимодействуют с веб-приложением.