Core Web Vitals: измерение и улучшение веб-производительности
Вы создали современное веб-приложение, но пользователи жалуются на медлительность. Позиции в поиске падают. Вы проверяете код — ничего очевидного. Проблема может быть в Core Web Vitals (CWV) — метриках Google для оценки пользовательского опыта. Это руководство покажет, как их измерять и улучшать на практике.
Что такое Core Web Vitals?
Core Web Vitals — это три метрики, количественно оценивающие реальный пользовательский опыт:
- Largest Contentful Paint (LCP): время до загрузки основного контента. Цель — ≤2,5 с.
- First Input Delay (FID): время от первого взаимодействия пользователя до ответа. Цель — ≤100 мс.
- Cumulative Layout Shift (CLS): визуальная стабильность — насколько элементы неожиданно смещаются. Цель — ≤0,1.
Эти метрики входят в сигналы page experience Google и напрямую влияют на SEO. Но что важнее, они отражают реальное недовольство пользователей.
Как измерять Core Web Vitals
Нужны данные как из лаборатории, так и из поля. Лабораторные данные помогают отлаживать; полевые отражают реальных пользователей.
Лабораторные инструменты
- Lighthouse (в Chrome DevTools или онлайн) — быстрый аудит с оценками и возможностями.
- WebPageTest — продвинутый анализ водопада и раскадровка.
- Панель Performance в Chrome DevTools — глубокое погружение в runtime.
Полевые инструменты
- Chrome User Experience Report (CrUX) — публичный набор данных метрик реальных пользователей.
- PageSpeed Insights — объединяет лабораторные и полевые данные.
- Отчёт Core Web Vitals в Search Console — группирует URL по статусу.
- JavaScript-библиотека web-vitals — для сбора собственных полевых данных.
Начните с PageSpeed Insights, чтобы получить базовый уровень. Затем используйте библиотеку web-vitals для инструментирования сайта и отправки метрик в аналитику.
import {onLCP, onFID, onCLS} from 'web-vitals';
function sendToAnalytics(metric) {
const body = JSON.stringify(metric);
navigator.sendBeacon('/analytics', body);
}
onLCP(sendToAnalytics);
onFID(sendToAnalytics);
onCLS(sendToAnalytics);
Улучшение LCP
LCP часто является главным виновником. Оптимизируйте критический путь:
- Определите элемент LCP — обычно это главное изображение, заголовок или постер видео.
- Оптимизируйте изображения — сжимайте, используйте современные форматы (WebP/AVIF) и задавайте явные размеры.
- Предзагружайте ресурс LCP — используйте
<link rel="preload">для изображений или шрифтов. - Сократите время ответа сервера — используйте кэширование, CDN и эффективный бэкенд.
- Устраните ресурсы, блокирующие рендеринг — отложите некритичный CSS/JS.
Для изображений инструменты вроде Image Compressor помогут уменьшить файлы без потери качества.
Улучшение FID
FID измеряет отзывчивость на ввод. Длинные JavaScript-задачи блокируют основной поток.
- Разбивайте длинные задачи — используйте
setTimeoutилиrequestIdleCallbackдля уступки. - Разделяйте код — загружайте только необходимый JS.
- Оптимизируйте обработчики событий — применяйте debounce или throttle для дорогих операций.
- Используйте веб-воркеры для ресурсоёмких вычислений.
// Пример: уступка основному потоку
function yieldToMain() {
return new Promise(resolve => {
setTimeout(resolve, 0);
});
}
async function processItems(items) {
for (const item of items) {
// обработка элемента
await yieldToMain();
}
}
Улучшение CLS
Сдвиги макета раздражают пользователей. Предотвращайте их, резервируя место:
- Задавайте ширину/высоту для изображений и видео — или используйте CSS
aspect-ratio. - Не вставляйте контент над существующим — если это не ответ на действие пользователя.
- Используйте анимации через transform вместо свойств, вызывающих перекомпоновку.
- Предзагружайте шрифты и используйте
font-display: swap, чтобы избежать невидимого текста.
Сравнение метрик и инструментов
| Метрика | Что измеряет | Цель | Ключевые инструменты |
|---|---|---|---|
| LCP | Производительность загрузки | ≤2,5 с | Lighthouse, PageSpeed Insights, WebPageTest |
| FID | Интерактивность | ≤100 мс | Lighthouse (прокси TBT), библиотека web-vitals |
| CLS | Визуальная стабильность | ≤0,1 | Lighthouse, Chrome DevTools, web-vitals |
Практический рабочий процесс
- Измеряйте — запустите PageSpeed Insights на ключевых страницах. Запишите полевые данные (если доступны) и лабораторные оценки.
- Расставляйте приоритеты — сосредоточьтесь на плохих метриках, влияющих на большинство пользователей.
- Исправляйте — применяйте описанные методы, начиная с наибольшего выигрыша (например, оптимизация изображений).
- Проверяйте — повторно запускайте лабораторные тесты и отслеживайте полевые данные через web-vitals.
- Итерируйте — производительность требует постоянного внимания; устанавливайте бюджеты и следите за регрессиями.
Помните: полевые данные — это истина в последней инстанции. Лабораторные инструменты помогают отлаживать, но могут не отражать реальные условия пользователей.
Часто задаваемые вопросы
Как часто нужно измерять Core Web Vitals?
Отслеживайте непрерывно в продакшене с помощью библиотеки web-vitals. Запускайте лабораторные аудиты перед крупными релизами и периодически (например, ежемесячно) для ключевых страниц.
Действительно ли улучшение Core Web Vitals влияет на SEO?
Да, page experience является сигналом ранжирования, но релевантность контента остаётся главной. Хорошие CWV улучшают пользовательский опыт, что косвенно помогает SEO.
В чём разница между лабораторными и полевыми данными?
Лабораторные данные собираются в контролируемой среде с имитацией условий; полевые — от реальных пользователей на различных устройствах и сетях. Используйте оба: лабораторные для отладки, полевые для истины.
Готовы оптимизировать изображения для лучшего LCP? Попробуйте наш бесплатный Image Compressor, чтобы уменьшить размер файлов без потери качества.