awesome-everything EN
↑ Обратно к восхождению

Браузер и фронтенд-рантайм

Lab vs field: почему они расходятся и как использовать каждый

Суть Lighthouse — лабораторный инструмент, воспроизводимый и хороший для отладки. CrUX — полевые данные реальных пользователей Chrome — и только поле влияет на ранжирование в поиске. Понять, какому из них доверять для какого вопроса — значит устранить путаницу.
Высота — путь к senior
НольJuniorMiddleSenior
Ты на middle-высоте — в небе
◷ 12 min

PageSpeed Insights показывает LCP 1.8 с в секции Lighthouse — зелёный, хорошо. Секция field data показывает LCP 3.9 с на p75 — красный, плохо. Команда говорит «лаб говорит, мы в порядке». Они ничего не шипают. Через три месяца Search Console всё ещё показывает плохой LCP. Оценка лаба и ранжирование измеряют разные вещи. Понять, какая из них вердикт, меняет всё.

Lab-данные vs field-данные — два разных вопроса.

Lab-данные — синтетическое измерение: инструмент как Lighthouse или DevTools загружает страницу один раз, на симулированном устройстве и зажатой сети, в контролируемой среде. Полностью воспроизводимо и точно атрибутирует проблемы — отлично для отладки. Одно устройство, одна сеть, один момент. Если изменить страницу и перезапустить, результат сопоставим.

Field-данные — real-user monitoring: реальные Core Web Vitals, испытываемые реальными посетителями на их реальных устройствах и сетях, агрегированные. Публичный полевой датасет Google — CrUX (Chrome User Experience Report). Он агрегирует визиты от пользователей Chrome, давших согласие на отчётность, и именно field p75 из CrUX использует ранжирование в поиске.

Они расходятся постоянно, потому что измеряют разное. Lab-прогон на симулированном быстром устройстве показывает LCP, которого четверть реальных пользователей — на старых телефонах, на перегруженном 4G — никогда не достигает. INP в лабе почти не существует, потому что лабораторные инструменты не скриптуют реалистичные последовательности взаимодействий; lab-прокси — Total Blocking Time (TBT). CLS в лабе близок к реальному, но динамический контент, появляющийся только в реальных сессиях, может быть пропущен.

Lab vs field — ключевые различия
Lab (Lighthouse, DevTools)
Синтетика, воспроизводимо, отлаживаемо
Field (CrUX, web-vitals RUM)
Реальные пользователи, устройства, сети
Что влияет на ранжирование
CrUX field p75
Lab-прокси для INP
Total Blocking Time (TBT)
Правило
Отлаживай в лабе; суди по полю

Правило: отлаживай в лабе, суди по полю.

Используйте лаб для воспроизведения и атрибуции проблемы (быстро, детерминированно, легко бисектировать коммиты) и для CI-гейтинга регрессий (Lighthouse CI на каждом PR, быстро, без реальных пользователей). Используйте field p75 как вердикт о том, реально ли страница хороша для пользователей и будет ли она ранжироваться. Lab-улучшение, не сдвинувшее field p75, не помогло пользователям. Только field-число — правда.

Вспомогательные диагностические метрики.

Три Core Web Vitals сидят поверх слоя диагностических метрик, которые не оцениваются для ранжирования, но необходимы для их понимания:

  • TTFB (Time to First Byte) — серверно-сетевая часть. Это пол под LCP: LCP никогда не может быть быстрее TTFB.
  • FCP (First Contentful Paint) — когда появляется первый пиксель контента, в противоположность самому крупному у LCP. Большой зазор FCP-to-LCP означает, что страница быстро показывает что-то, но главный контент отстаёт.
  • TBT (Total Blocking Time) — сумма блокирующей части каждой длинной задачи во время загрузки. Это lab-прокси для INP: истинный INP нельзя измерить в лабе (нужны реальные взаимодействия), поэтому CI-гейты используют TBT вместо.

Знание этих метрик позволяет читать отчёт Lighthouse полностью — Lighthouse никогда не говорит просто «LCP плох», он показывает TTFB и FCP под ним, чтобы видеть, где в цепочке ушло время.

Чтение DevTools performance-трассы.

Откройте DevTools, панель Performance, запишите загрузку страницы и взаимодействие. Трасса показывает несколько дорожек:

  • Дорожка Timings: маркеры FCP, LCP и DCL вертикальными линиями. Hover по маркеру LCP называет элемент.
  • Дорожка Frames: каждый отрисованный кадр; layout shifts появляются как красные маркеры — кликните, чтобы увидеть сдвинувшиеся узлы.
  • Дорожка Main: flame chart работы главного потока; длинные задачи флагуются красным углом.
  • Дорожка Interactions: click/tap-события, разбитые на input delay, processing и presentation delay — цветокодированные — так что видно, какая часть доминирует без догадок.

Воркфлоу INP: взаимодействуйте во время записи, найдите взаимодействие в дорожке Interactions, прочитайте трёхчастный сплит. Воркфлоу LCP: найдите маркер LCP в дорожке Timings, наведите для идентификации элемента, затем посмотрите на network waterfall выше, чтобы увидеть, когда ресурс был запрошен vs скачан vs когда элемент отрисовался.

Почему это работает

Почему используется p75, а не медиана? Медианная производительность тянется вниз быстрыми выбросами — разработчики на быстром Wi-Fi, закешированные повторные визиты. 75-й перцентиль фокусирует внимание на медленной четверти реальных пользователей: тех на старых телефонах, мобильных сетях или слабых процессорах. Изменение, улучшающее медиану, но не p75, помогло уже-быстрым пользователям и ничего не сделало для тех, кому помощь нужна больше. p75 — порог, делающий целью оптимизации хвост распределения, а не его центр. Важное следствие: иногда p75 плох не потому что страница в целом медленная, а потому что один сегмент (одна страна, один класс устройств) тянет хвост — поэтому RUM-данные нужно резать по сегментам, а не смотреть один агрегат по всему трафику.

Проследи
1/4

PageSpeed Insights показывает LCP 1.8 с в секции Lighthouse (lab) — хорошо — но секция полевых данных показывает LCP 3.9 с на p75 — плохо. Команда говорит «лаб говорит, мы в порядке». Кто прав?

1
Step 1 of 4
Полевые данные — реальный вердикт — лаб прогнался на быстром симулированном устройстве; реальные пользователи на p75 на медленных телефонах и сетях, и 3.9 с — то, что они реально испытывают
2
Locked
Лаб прав, потому что он воспроизводим
3
Locked
Оба неправы; важен только TTFB
4
Locked
Усредните оба: 2.85 с
Закончи аналогию

Google публикует публичный датасет Core Web Vitals реальных пользователей, агрегированный из реальных посещений Chrome, и ранжирование в поиске основано на нём — не на каком-либо лабораторном тесте. Как называется этот полевой датасет?

Посчитай

«Хороший» INP требует задержки взаимодействия не более скольки миллисекунд на 75-м перцентиле?

мс
Вспомните перед уходом
  1. 01
    Объясните различие lab vs field и дайте правило, когда использовать каждый.
  2. 02
    Почему Total Blocking Time используется как INP-прокси в CI, а не измеряется INP напрямую?
  3. 03
    В DevTools performance-трассе что показывает дорожка Interactions для медленного взаимодействия, и как её использовать для диагностики INP?
Итог

Lab-данные — из Lighthouse или DevTools — синтетические: одно устройство, одна сеть, воспроизводимо, отлично для отладки и CI-гейтинга регрессий. Field-данные — CrUX — с реальных пользователей Chrome на p75, и именно их использует ранжирование Search. Они расходятся постоянно, потому что реальное разнообразие пользователей (более медленные телефоны, перегруженные сети) не захватывается одним симулированным прогоном. INP почти не существует в лабе, потому что лабораторные инструменты не симулируют реальные взаимодействия; lab-прокси — Total Blocking Time. Правило: отлаживай в лабе, суди по полю. TTFB, FCP и TBT — вспомогательные диагностические метрики под тремя Core Web Vitals; знание их позволяет читать отчёт Lighthouse и отслеживать, где в цепочке ушло время. Lab-улучшение, не сдвинувшее field p75, не помогло пользователям; только field-число — реальный вердикт.

Связанные уроки
встречается в193
Продолжить восхождение ↑Трейдоффы метрик, RUM-атрибуция и цикл CI+поле
хоткеи развернуть
поиск
K
пред. пьеса
k
след. пьеса
j
тиры
t
это меню
?
sources3
expand
  1. 01
  2. 02
  3. 03

Trademarks belong to their respective owners. Editorial reference only.