Core Web Vitals: измерение и улучшение веб-производительности
Ваш сайт загружается, но пользователи всё равно уходят. Медленная загрузка, неожиданные сдвиги макета и неотзывчивые взаимодействия раздражают посетителей и вредят вашим позициям в поиске. Core Web Vitals (CWV) — это метрики Google для оценки пользовательского опыта, и они напрямую влияют на SEO. Это руководство покажет, как измерять и улучшать их с помощью практических шагов.
Что такое Core Web Vitals?
Core Web Vitals — это три метрики, которые количественно оценивают ключевые аспекты пользовательского опыта:
- Largest Contentful Paint (LCP): Измеряет производительность загрузки. Время, за которое самый крупный элемент контента (изображение, текстовый блок, видео) становится видимым. Хорошо: ≤ 2,5 с.
- First Input Delay (FID): Измеряет интерактивность. Время от первого взаимодействия пользователя (клик, касание, нажатие клавиши) до ответа браузера. Хорошо: ≤ 100 мс.
- Cumulative Layout Shift (CLS): Измеряет визуальную стабильность. Количественно оценивает неожиданные сдвиги макета во время загрузки страницы. Хорошо: ≤ 0,1.
Эти метрики являются частью сигналов удобства страницы Google и влияют на позиции в поиске. Они также отражают реальный пользовательский опыт, поэтому их улучшение приносит пользу как SEO, так и удовлетворённости пользователей.
Как измерять Core Web Vitals
Вам нужны полевые данные (измерения реальных пользователей) и лабораторные данные (синтетическое тестирование). Используйте оба подхода для полной картины.
Инструменты полевых данных
- Chrome User Experience Report (CrUX): Публичный набор данных метрик реальных пользователей. Доступен через PageSpeed Insights, Search Console или BigQuery.
- PageSpeed Insights: Показывает полевые данные (если доступны) и лабораторные данные для URL.
- Отчёт Core Web Vitals в Search Console: Группирует URL по статусу (плохо, требует улучшения, хорошо).
- JavaScript-библиотека web-vitals: Собирайте собственные полевые данные с помощью
import {onLCP, onFID, onCLS} from 'web-vitals';и отправляйте на свою аналитическую конечную точку.
Инструменты лабораторных данных
- Lighthouse: Встроен в Chrome DevTools. Запускает аудиты производительности, доступности и SEO. Предоставляет лабораторные метрики и возможности для улучшения.
- WebPageTest: Продвинутое тестирование с настраиваемыми сетевыми условиями и диаграммами водопада.
- Панель Performance в Chrome DevTools: Записывайте производительность во время выполнения, чтобы выявить длинные задачи и проблемы рендеринга.
Улучшение Largest Contentful Paint (LCP)
LCP часто является наиболее значимой метрикой. Оптимизируйте критический путь рендеринга и самый крупный элемент.
1. Оптимизируйте самый крупный элемент
- Если LCP — это изображение: сожмите его, используйте современные форматы (WebP, AVIF) и задайте атрибуты
widthиheight, чтобы избежать сдвигов макета. - Предзагрузите изображение LCP:
<link rel="preload" as="image" href="#">. - Используйте адаптивные изображения с
srcsetиsizes. - Если LCP — это текст: обеспечьте быструю загрузку шрифтов. Используйте
font-display: swapи предзагружайте ключевые шрифты.
2. Устраните ресурсы, блокирующие рендеринг
- Встройте критический CSS и отложите некритический CSS.
- Отложите или асинхронизируйте JavaScript:
<script src="#" defer></script>. - Минифицируйте CSS и JavaScript.
3. Улучшите время ответа сервера
- Используйте CDN для доставки ресурсов из мест, близких к пользователям.
- Включите кэширование (заголовки HTTP-кэша, service workers).
- Оптимизируйте производительность бэкенда (запросы к базе данных, серверное кэширование).
4. Уменьшите размер полезной нагрузки
- Сжимайте изображения и используйте ленивую загрузку для изображений ниже первого экрана.
- Удалите неиспользуемый JavaScript и CSS.
- Используйте разделение кода, чтобы загружать только необходимый код.
Улучшение First Input Delay (FID)
FID измеряет отзывчивость. Длинные задачи JavaScript блокируют основной поток, задерживая обработку взаимодействий.
1. Разбивайте длинные задачи
Используйте setTimeout или requestIdleCallback, чтобы уступить основному потоку. Или используйте scheduler.yield(), где это поддерживается.
// Пример: уступить основному потоку после части работы
async function processInChunks(items) {
for (let i = 0; i < items.length; i++) {
// обработка элемента
if (i % 50 === 0) {
await new Promise(resolve => setTimeout(resolve, 0));
}
}
}
2. Оптимизируйте обработчики событий
- Используйте debounce или throttle для высокочастотных событий (scroll, resize, input).
- Используйте пассивные слушатели событий для touch и wheel:
element.addEventListener('touchstart', handler, {passive: true});. - Избегайте тяжёлой работы в обработчиках событий; переносите её в Web Workers.
3. Сократите время выполнения JavaScript
- Разделяйте код и лениво загружайте некритический JavaScript.
- Удаляйте неиспользуемые зависимости.
- Используйте tree-shaking и минификацию.
Улучшение Cumulative Layout Shift (CLS)
CLS измеряет визуальную стабильность. Неожиданные сдвиги раздражают пользователей и вызывают ошибочные клики.
1. Всегда указывайте размеры
Для изображений и видео задавайте width и height (или используйте CSS aspect-ratio), чтобы браузер резервировал место.
2. Резервируйте место для динамического контента
- Для рекламы, встраиваемых элементов или динамического контента используйте заполнитель с фиксированными размерами.
- Избегайте вставки контента над существующим контентом, если это не ответ на взаимодействие с пользователем.
3. Используйте анимации на основе transform
Предпочитайте CSS transform и opacity для анимаций; они не вызывают сдвигов макета.
4. Осторожно загружайте шрифты
Используйте font-display: optional или swap, чтобы избежать невидимого текста и сдвигов макета. Предзагружайте ключевые шрифты.
Инструменты и рабочий процесс для непрерывного улучшения
Производительность — это постоянный процесс. Интегрируйте измерения в процесс разработки.
- Используйте Lighthouse CI в вашем конвейере для обнаружения регрессий.
- Отслеживайте полевые данные через web-vitals и вашу аналитику.
- Установите бюджеты производительности и оповещайте о нарушениях.
Для быстрых проверок используйте Nginx Log Analyzer от TryQuickToolBox, чтобы выявить медленные ответы сервера, которые могут влиять на LCP.
FAQ
Каковы текущие пороги для Core Web Vitals?
LCP: хорошо ≤ 2,5 с, требует улучшения ≤ 4 с, плохо > 4 с. FID: хорошо ≤ 100 мс, требует улучшения ≤ 300 мс, плохо > 300 мс. CLS: хорошо ≤ 0,1, требует улучшения ≤ 0,25, плохо > 0,25. Эти значения оцениваются на 75-м процентиле загрузок страниц.
Как часто следует измерять Core Web Vitals?
Отслеживайте полевые данные непрерывно через аналитику и Search Console. Запускайте лабораторные тесты при каждом значительном изменении кода и как минимум ежемесячно для проверки базовых показателей.
Действительно ли улучшение Core Web Vitals влияет на SEO?
Да, Google использует сигналы удобства страницы, включая Core Web Vitals, как фактор ранжирования. Хотя контент остаётся основным, хорошие CWV могут дать вам преимущество, особенно в конкурентных нишах.
Готовы оптимизировать? Начните с измерения текущих показателей в PageSpeed Insights, затем займитесь самыми большими возможностями. Для быстрой проверки на стороне сервера попробуйте наш Nginx Log Analyzer, чтобы выявить медленные ответы бэкенда, которые могут ухудшать ваш LCP.