Core Web Vitals: измеряем и улучшаем веб-производительность
Ваши пользователи ожидают быстрого и плавного опыта. Если сайт кажется медленным, они уходят — и поисковые системы это замечают. Core Web Vitals — это метрики, которые количественно оценивают реальный пользовательский опыт: скорость загрузки, интерактивность и визуальную стабильность. Это руководство покажет, как их измерять и как добиться практических улучшений.
Что такое Core Web Vitals?
Core Web Vitals — это набор из трёх метрик, определённых Google для оценки ключевых аспектов пользовательского опыта:
- Largest Contentful Paint (LCP): измеряет производительность загрузки. Отмечает время, когда самый крупный элемент контента (часто главное изображение или заголовок) становится видимым. Стремитесь к LCP менее 2,5 секунд.
- Interaction to Next Paint (INP): измеряет отзывчивость. Фиксирует время от взаимодействия пользователя (клик, нажатие, ввод с клавиатуры) до следующего визуального обновления. Стремитесь к INP менее 200 миллисекунд.
- Cumulative Layout Shift (CLS): измеряет визуальную стабильность. Количественно оценивает неожиданные сдвиги макета во время загрузки. Стремитесь к CLS менее 0,1.
Эти пороги основаны на полевых данных реальных пользователей (75-й процентиль). Лабораторные данные помогают диагностировать проблемы, но полевые данные отражают фактический опыт.
Как измерять Core Web Vitals
Вам нужны как полевые, так и лабораторные данные. Полевые данные показывают производительность для реальных пользователей; лабораторные данные позволяют отлаживать и тестировать изменения.
Инструменты полевых данных
- Chrome UX Report (CrUX): агрегированные данные реальных пользователей для миллионов сайтов. Доступ через PageSpeed Insights, Search Console или CrUX API.
- JavaScript-библиотека web-vitals: собирайте собственные полевые данные, отправляя метрики в вашу аналитику.
Инструменты лабораторных данных
- Lighthouse: встроен в Chrome DevTools, запускает аудиты и предоставляет возможности для улучшения.
- WebPageTest: продвинутое тестирование с эмуляцией сети и раскадровкой.
- Панель Performance в Chrome DevTools: глубокое изучение производительности во время выполнения.
Начните с PageSpeed Insights: он показывает как полевые, так и лабораторные данные для URL. Затем используйте Lighthouse локально для итераций.
Улучшение LCP
LCP часто является наиболее важной метрикой для исправления. Самый крупный элемент обычно представляет собой изображение или текстовый блок. Оптимизируйте эти области:
- Оптимизируйте изображение LCP: сжимайте его, используйте современные форматы, такие как WebP или AVIF, и задавайте явные размеры.
- Предзагружайте ресурс LCP: используйте
<link rel="preload">для изображений или шрифтов, используемых в верхней части страницы. - Устраните блокирующие рендеринг ресурсы: встраивайте критический CSS, откладывайте некритический CSS и JavaScript.
- Используйте CDN: доставляйте ресурсы из мест, близких к пользователям.
- Сократите время ответа сервера: оптимизируйте бэкенд, используйте кэширование и рассмотрите рендеринг на периферии.
Пример: предзагрузка главного изображения:
<link rel="preload" as="image" href="/hero.webp" imagesrcset="/hero-480.webp 480w, /hero-800.webp 800w" imagesizes="(max-width: 600px) 480px, 800px">
Улучшение INP
INP измеряет отзывчивость. Длинные задачи блокируют основной поток и задерживают визуальную обратную связь. Распространённые исправления:
- Разбивайте длинные задачи: используйте
setTimeoutилиscheduler.yield(), чтобы уступить основному потоку. - Оптимизируйте обработчики событий: применяйте debounce или throttle для частых событий, избегайте тяжёлой синхронной работы.
- Сократите JavaScript: разделяйте код, удаляйте неиспользуемый код и откладывайте некритические скрипты.
- Используйте веб-воркеры для задач, интенсивно использующих CPU.
- Избегайте масштабных обновлений DOM: группируйте изменения DOM и используйте requestAnimationFrame.
Измеряйте INP с помощью библиотеки web-vitals и выявляйте медленные взаимодействия на панели Performance.
Улучшение CLS
Сдвиги макета происходят, когда элементы неожиданно меняют положение. Предотвращайте их следующим образом:
- Задавайте атрибуты размера для изображений и видео (ширина и высота).
- Резервируйте место для рекламы и встраиваемых элементов с помощью CSS
aspect-ratioили фиксированных контейнеров. - Избегайте вставки контента над существующим контентом, если это не ответ на действие пользователя.
- Используйте font-display: swap и предзагружайте шрифты, чтобы минимизировать сдвиги FOIT/FOUT.
- Анимируйте с помощью transform вместо свойств, вызывающих перестройку макета.
Быстрое сравнение: метрики и целевые значения
| Метрика | Что измеряет | Хороший целевой показатель | Распространённые исправления |
|---|---|---|---|
| LCP | Производительность загрузки | ≤ 2,5 с | Оптимизация изображений, предзагрузка, CDN |
| INP | Отзывчивость | ≤ 200 мс | Разбиение длинных задач, сокращение JS |
| CLS | Визуальная стабильность | ≤ 0,1 | Задание размеров, резервирование места |
Мониторинг и итерации
Производительность — это не разовое исправление. Настройте непрерывный мониторинг:
- Используйте библиотеку web-vitals для отправки метрик в вашу аналитику.
- Настройте оповещения о регрессиях в вашем CI/CD конвейере с помощью Lighthouse CI.
- Регулярно просматривайте полевые данные в Search Console.
Помните, что улучшения следует подтверждать данными реальных пользователей, а не только лабораторными оценками.
Часто задаваемые вопросы
Что такое Core Web Vitals и почему они важны?
Core Web Vitals — это ориентированные на пользователя метрики производительности (LCP, INP, CLS), которые измеряют загрузку, интерактивность и визуальную стабильность. Они важны, потому что коррелируют с пользовательским опытом и используются Google как сигнал ранжирования.
Как часто следует проверять Core Web Vitals?
Проверяйте полевые данные ежемесячно и после крупных релизов. Используйте лабораторные инструменты во время разработки, чтобы вовремя обнаруживать регрессии. Идеальным вариантом является непрерывный мониторинг с метриками реальных пользователей.
Можно ли улучшить Core Web Vitals без перестройки сайта?
Да. Многие улучшения — такие как оптимизация изображений, предзагрузка ключевых ресурсов, откладывание скриптов и задание размеров элементов — можно применять постепенно без полного редизайна.
Нужно быстро сжать изображения для лучшего LCP? Попробуйте наш бесплатный Image Compressor, чтобы уменьшить размер файлов без потери качества.