Измерение влияния потоковой передачи: FCP, TTI и LCP
Сравните производительность потоковой SSR и блокирующей SSR в реальных условиях с помощью Lighthouse и WebPageTest
«Измерение влияния потоковой передачи: FCP, TTI и LCP» — бесплатный урок React Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения React Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс React Academy содержит 4 уроков всего.
FCP: первая отрисовка содержимого
FCP измеряет время от начала навигации до момента, когда первый фрагмент содержимого — текст, изображение или фон — отрисовывается на экране. Потоковая передача улучшает FCP, немедленно отправляя HTML-оболочку: браузер может отрисовать макет, навигацию и любой текст в верхней части экрана сразу после поступления первых фрагментов.
Как потоковая передача улучшает FCP
При синхронной SSR с использованием renderToString браузер не получает HTML, пока весь рендеринг не завершён. При потоковой передаче браузер получает HTML-оболочку в течение нескольких миллисекунд после запроса — макет и статическое содержимое появляются почти сразу, значительно сокращая FCP.
LCP: отрисовка крупнейшего содержимого
LCP измеряет момент, когда крупнейший видимый элемент в области просмотра отрисован — обычно это изображение главного экрана или крупный заголовок. Потоковая передача улучшает LCP, если элемент LCP является частью оболочки, а не находится внутри границы Suspense, поскольку оболочка передаётся раньше любых секций, зависящих от данных.
Как поместить элемент LCP в оболочку
Ключевая оптимизация — спроектировать страницу так, чтобы элемент LCP, то есть секция главного экрана, основной заголовок или рекомендуемое изображение, находился вне любой границы Suspense. Если элемент LCP находится внутри границы Suspense и ожидает данные, потоковая передача не сможет улучшить LCP, пока эти данные не разрешатся.
TTI: время до интерактивности
TTI измеряет момент, когда страница начинает надёжно реагировать на ввод пользователя, то есть когда длительные задачи не блокируют основной поток. Потоковая передача в сочетании с выборочной гидратацией сокращает TTI, распределяя работу по гидратации во времени вместо выполнения одной большой синхронной задачи после загрузки всего JavaScript.
TTFB: чего потоковая передача не исправляет
Время до первого байта (TTFB) определяется задержкой сети и временем обработки на сервере до отправки первого байта. Потоковая передача не изменяет TTFB — здесь помогает рендеринг на периферии. Чтобы потоковая передача улучшила FCP, сначала необходимо добиться низкого TTFB; иначе вы просто передаёте данные с медленного исходного сервера.
WebPageTest для анализа потоковой передачи
Режим киноленты в WebPageTest показывает последовательность снимков экрана, сделанных каждые 100 мс во время загрузки страницы. На странице с потоковой передачей макет появляется рано, а затем разделы постепенно заполняются. На странице без потоковой передачи сначала отображается пустой экран, после чего внезапно появляется полностью отрисованная страница — это заметное визуальное различие.
Настройка теста производительности потоковой передачи
Показательный тест производительности сравнивает одну и ту же страницу, отрисованную двумя способами: с включённой потоковой передачей Next.js RSC и с традиционной синхронной SSR. Используйте WebPageTest с фиксированными условиями сети, например Fast 3G и 4-кратным замедлением CPU, и сравните метрики FCP, LCP и TTI в 3 тестовых запусках для получения статистически достоверных результатов.
Ограничение скорости сети в DevTools
На вкладке «Сеть» в Chrome DevTools есть раскрывающийся список «Ограничение скорости» с готовыми профилями, такими как Fast 3G и Slow 4G. Fast 3G (1,6 Мбит/с, RTT 150 мс) подчёркивает различие между потоковой передачей и её отсутствием, поскольку увеличивает время загрузки полного HTML-документа и делает заметными преимущества поэтапной потоковой передачи.
INP: самая важная метрика
Взаимодействие до следующей отрисовки (INP) измеряет время от любого взаимодействия пользователя до следующей отрисовки. В 2024 году эта метрика заменила FID в составе основных веб-показателей. Потоковая передача уменьшает INP, отдавая приоритет гидратации интерактивных компонентов, с которыми пользователь, вероятнее всего, будет взаимодействовать в первую очередь, и сокращая время блокировки до того, как эти компоненты начнут реагировать.
Сочетание потоковой передачи с отрисовкой на периферии
Наибольший эффект даёт сочетание отрисовки на периферии (низкий TTFB благодаря близкой точке присутствия) с потоковой передачей (поэтапной доставкой HTML) и выборочной гидратацией (поэтапной обработкой JS). Вместе эти три метода минимизируют все основные метрики производительности на протяжении всего жизненного цикла загрузки.
Какую метрику потоковая передача улучшает сильнее всего?
Какую метрику производительности потоковая передача React наиболее непосредственно улучшает для содержимого в первом экране?
Итоги урока
Потоковая передача наиболее непосредственно улучшает FCP, немедленно доставляя HTML-оболочку, а также улучшает LCP, если элемент LCP находится в этой оболочке. TTI улучшается благодаря выборочной гидратации, которая распределяет работу JS во времени. TTFB не изменяется — для его улучшения используйте отрисовку на периферии. Измеряйте влияние потоковой передачи с помощью киноленты WebPageTest и ограничения скорости в Chrome DevTools, а для оптимизации интерактивности в первую очередь ориентируйтесь на INP среди основных веб-показателей.
Часто задаваемые вопросы
Урок «Измерение влияния потоковой передачи: FCP, TTI и LCP» бесплатный?
Да — полный текст урока «Измерение влияния потоковой передачи: FCP, TTI и LCP» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс React Academy, подпишись на CoddyKit PRO. Курс React Academy содержит 4 уроков всего.
Чему я научусь в уроке «Измерение влияния потоковой передачи: FCP, TTI и LCP»?
Сравните производительность потоковой SSR и блокирующей SSR в реальных условиях с помощью Lighthouse и WebPageTest Ты практикуешь React Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать React Academy?
Предыдущий опыт не требуется. React Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Измерение влияния потоковой передачи: FCP, TTI и LCP»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке React Academy?
Да. Каждый урок React Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Потоковая передача в React 18: как работает renderToPipeableStream
- Границы Suspense и приоритет потоковой передачи
- Прогрессивная гидратация с выборочной гидратацией
- Измерение влияния потоковой передачи: FCP, TTI и LCP