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

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

Общая картина: от URL до LCP до INP как эстафета

Суть Загрузка страницы — это эстафета через сеть, парсинг, отрисовку и гидратацию — один медленный бегун задерживает всех следующих, и пользователь видит только финишную черту.
Высота — путь к senior
НольJuniorMiddleSenior
Ты на junior-высоте — поверхность
◷ 10 min

Беа тапает ссылку на товар. Страница рисует фото и цену через 1.4 секунды — выглядит готовой. Она тапает «В корзину» на 2 секунде, и ничего не происходит. Кнопка не сломана — она просто ещё не подключена. Гидратация ещё не закончила работу.

Метафора эстафеты.

Представьте загрузку страницы как эстафету с четырьмя бегунами, каждый передаёт эстафетную палочку следующему:

  1. Сеть — фетчит байты HTML с сервера.
  2. Парсинг — строит DOM из HTML и CSSOM из CSS.
  3. Отрисовка — компонует страницу и рисует первый кадр. В этот момент страница выглядит готовой.
  4. Гидратация — скачивает и запускает JavaScript, который прицепляет обработчики событий и состояние к нарисованной странице. Только теперь страница работает.

Гонка быстра ровно настолько, насколько быстра вся цепь. Если один бегун спотыкается, все бегуны после него опаздывают. Пользователь видит только финишную черту — когда страница выглядит готовой и когда она реально отвечает на тап.

Почему это важно.

Почти никакая реальная проблема производительности не живёт в одном месте. Медленная страница обычно — проблема цепи: сервер был чуть медленным, бандл был чуть большим, hero-картинка была чуть поздней — и вместе они толкают страницу за черту «медленно». Трассировать всю цепь эффективнее, чем догадываться об одном шаге.

Реальная трасса эстафеты (средний телефон, 4G)
Страница выглядит готовой (LCP)
1.4 с
Страница становится интерактивной (гидратация)
3.0 с
Зазор: выглядит готова, но не готова
1.6 с
Порог хорошего LCP
≤ 2.5 с
Порог хорошего INP
≤ 200 мс
Расставь шаги по порядку

Проследите страницу от нажатия Enter до работающей кнопки. Расставьте стадии по порядку.

  1. 1 Сеть: фетч байтов HTML с сервера
  2. 2 Парсинг: построение DOM из HTML, CSSOM из CSS
  3. 3 Отрисовка: компоновка и рисование первого кадра — выглядит готово
  4. 4 Гидратация: запуск JavaScript, подключение кнопок
  5. 5 Взаимодействие: тап теперь получает отклик
Викторина

Страница «выглядит готовой», но кнопка ещё не работает. Какая стадия эстафеты ещё идёт?

Викторина

Почему медленная страница обычно — «проблема цепи»?

Закончи аналогию

В метафоре эстафеты страница «выглядит готовой», когда картинка нарисована, но она по-настоящему не готова, пока не финиширует ещё один бегун — тот, кто подключает кнопки. Как называется работа этого финального бегуна?

Посчитай

В трассе страница выглядит готовой на 1.4 с, но интерактивна только на 3.0 с. Сколько секунд зазор «выглядит готовой, но не готова»?

секунды
Почему это работает

Зазор между «нарисовано» и «интерактивно» имеет имя в литературе по производительности: зловещая долина гидратации. Страница выглядит живой — текст, картинки, кнопки все видны — но она не живая, потому что JavaScript ещё не закончил гидрироваться. Она «зловещая», потому что внешность обманывает. Хороший LCP (быстрая отрисовка) с плохим INP (медленное первое взаимодействие) — измеримая сигнатура страницы, застрявшей в этой долине.

Вспомните перед уходом
  1. 01
    Каковы четыре бегуна эстафеты загрузки страницы по порядку?
  2. 02
    Почему «выглядит готово» — не то же самое, что «работает»?
  3. 03
    Что делает медленную страницу «проблемой цепи»?
Итог

Загрузка страницы — эстафета через четыре стадии: сеть, парсинг, отрисовка и гидратация. Гонка быстра ровно настолько, насколько быстра вся цепь — один медленный бегун задерживает всех следующих. Пользователь видит два момента: когда страница выглядит готовой (после отрисовки, территория LCP) и когда она реально работает (после гидратации, территория INP). Зазор между ними — до 1.6 секунды в трассе выше — место мёртвых тапов и жалоб «сайт сломан». Большинство реальных проблем производительности — проблемы цепи, не провалы одного шага, поэтому трассировка всей цепи эффективнее догадки об одном месте.

Связанные уроки
встречается в267
Продолжить восхождение ↑Восемь слоёв трассировки: от service worker до второй навигации
хоткеи развернуть
поиск
K
пред. пьеса
k
след. пьеса
j
тиры
t
это меню
?
sources3
expand
  1. 01
  2. 02
  3. 03

Trademarks belong to their respective owners. Editorial reference only.