System Design Space
Граф знанийНастройки

Обновлено: 22 июня 2026 г. в 05:40

Модели рендеринга фронтенда: SPA, SSR, SSG, потоковый рендеринг и гидратация

средний

Как выбирать модель рендеринга под SEO, задержку, CDN-кэш, персонализацию и продуктовые ограничения: SPA, SSR, SSG, потоковый рендеринг, острова и гидратация.

Выбор между SPA, SSR, SSG, потоковым рендерингом и островной архитектурой редко бывает чисто техническим. На самом деле это решение о том, где платить за скорость первого экрана, как работать с SEO, насколько сложным становится контур доставки и кто отвечает за проблемы гидратации в промышленной эксплуатации.

Эта глава полезна тем, что превращает спор о модели рендеринга в набор измеримых компромиссов: TTFB, LCP, кэшируемость HTML, цена персонализации и сложность диагностики. Так разговор о рендеринге перестаёт быть спором вкуса и становится архитектурным выбором под конкретный продукт.

Для интервью и ревью это важный материал, потому что именно стратегия рендеринга соединяет фронтенд с edge, CDN, композицией серверной стороны и ограничениями клиентской среды выполнения в одной точке принятия решений.

Практическая польза главы

Практика проектирования

Разделяйте маршруты по классам: публичные страницы, каталог, checkout, личный кабинет и документация часто требуют разных моделей рендеринга.

Качество решений

Оценивайте выбор по TTFB, LCP, кэшируемости HTML, размеру бандла, цене персонализации и сложности диагностики.

Аргументация на интервью

Объясняйте выбор как цепочку: класс маршрута, ограничения SEO и задержки, модель данных, кэширование, гидратация и путь миграции.

Формулировка компромиссов

Фиксируйте, где платится основная цена: на сервере, CDN, устройстве пользователя или в операционной сложности команды.

Контекст

Производительность фронтенд-платформы

Модель рендеринга влияет на воспринимаемую скорость раньше, чем большинство локальных UI-оптимизаций.

Читать обзор

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

Правильный вопрос звучит не как «какой режим лучше», а как «для какого класса маршрутов какой режим окупает свои компромиссы».

В этой главе рендеринг рассматривается вместе с , , , , , , , частичным пререндерингом, , , LCP, размером бандла, персонализацией и инвалидацией кэша.

Карта моделей рендеринга

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

Путь ответаЗапросСерверный рендерингHTMLГидратация

HTML на сервере

Сервер формирует HTML для запроса, браузер быстро видит содержимое, а затем клиентский код делает страницу интерактивной.

Вход

Запрос маршрута

Сервер получает URL, cookies, заголовки и контекст пользователя.

Рендеринг

Серверная среда

Собирает данные, шаблон и начальный HTML для конкретного запроса.

Ответ

Готовый HTML

Поисковая система, предпросмотр ссылки и пользователь получают содержимое до полной загрузки клиента.

Интерактивность

Гидратация

Клиентский код связывает HTML с состоянием и обработчиками событий.

Архитектурный смысл

Когда выбирать

  • Публичные страницы с требованиями к SEO и первому экрану.
  • Важны предпросмотры ссылок, быстрый HTML и контролируемая персонализация.
  • Команда готова поддерживать серверную среду и диагностику гидратации.

SSR быстрее отдаёт содержательный HTML, но клиентский код всё равно остаётся частью цены: тяжёлая гидратация может ухудшить пользовательский опыт.

Где какой режим окупается

SPA

Серверная часть остаётся тонкой: вся логика интерфейса живёт в , а сервер только отдаёт почти пустой HTML и бандл.

Где уместно

Внутренние продукты, рабочие кабинеты после входа и сценарии с богатой интерактивностью, где индексируемый HTML не является главным ограничением.

За что платим

Первый экран, и восстановление состояния после обновления страницы никто за вас не сделает — за ними придётся следить отдельно.

Серверный рендеринг (SSR) / потоковый SSR

даёт содержательный HTML в первом ответе: это помогает индексации, предпросмотру ссылок и первому экрану.

Где уместно

Маркетплейсы, медиа, страницы поиска и смешанные публично-приватные маршруты, где важны SEO и быстрый первый видимый экран.

За что платим

Растёт сложность серверной среды, , диагностики и персонализации.

SSG / ISR

хорошо ложится на , а позволяет обновлять готовые страницы без полной пересборки сайта.

Где уместно

Документация, базы знаний, маркетинговые страницы и каталоги с предсказуемой частотой обновления.

За что платим

Без явной политики свежести, правил обновления и границы между общим HTML и персонализированными блоками страница рано или поздно покажет устаревшие данные.

Островная архитектура (islands) / частичная гидратация

Страница остаётся в основном HTML, а оживают только интерактивные зоны через , поэтому в браузер уезжает заметно меньше кода.

Где уместно

Контентные страницы, лендинги и справочные материалы с несколькими интерактивными блоками.

За что платим

Цена — устойчивые границы виджетов, понятный обмен данными между островами и отдельная диагностика для каждого клиентского острова.

Современные модели: серверные компоненты и частичный пререндеринг

Четыре режима выше отвечают на вопрос «когда и где появляется HTML». Серверные компоненты React и частичный пререндеринг добавляют две новые оси, поэтому их удобно разбирать рядом с потоковым и островами: первая модель меняет место исполнения компонента, вторая — гранулярность границы между статикой и динамикой.

Серверные компоненты React (RSC)

Меняют не момент рендера, а место исполнения: выполняется только на сервере — на сборке или на запросе — и не отправляет свой код в браузер. Клиент получает готовый результат и ссылки на клиентские бандлы.

  • Серверные компоненты асинхронные: данные читаются прямо во время рендеринга, без отдельного клиентского запроса и водопадов.
  • Граница помечается директивой клиентского кода; гидратируются только клиентские компоненты, поэтому объём клиентского JavaScript и цена гидратации падают.
  • Серверное дерево передаётся не как HTML, а как сериализованную серверных компонентов: она стримится и встраивается в клиентское дерево, а код самих компонентов в неё не попадает.
  • Нужен фреймворк с серверной поддержкой React (например, App Router в Next.js); модель стабильна начиная с React 19.

Частичный пререндеринг (PPR)

Снимает выбор «весь маршрут статический или динамический»: один маршрут отдаёт статическую оболочку сразу, а персональные и свежие участки дострим­ивает в выделенные «дырки» в том же -ответе.

  • Граница статики и динамики — это Suspense: заглушка уезжает в статическую оболочку, а содержимое обёрнутого блока подтягивается на запросе, когда готово.
  • Построен поверх серверных компонентов: оболочка приходит как HTML при первой загрузке и как сериализованная при клиентской навигации.
  • Решение «статика или динамика» принимается на уровне границы Suspense, а не всего маршрута, — это гибрид внутри одной страницы.
  • В Next.js частичный пререндеринг стабилизирован в версии 16 и включается флагом cacheComponents; прежний экспериментальный experimental.ppr убран.

Для архитектуры это продолжение двух правил главы: серверные компоненты бьют по цене на уровне модели, а частичный пререндеринг переносит границу «общий кэшируемый каркас против персонализации» с уровня маршрута на уровень отдельного блока.

Сигналы для выбора

  • Насколько страница должна быть полезной до входа и до загрузки тяжёлой .
  • Есть ли жёсткие требования к SEO, предпросмотру ссылок в соцсетях и публичному первому экрану.
  • Можно ли кэшировать HTML на или ответ слишком персонализирован.
  • Как часто меняется контент и насколько критично показать слегка устаревший HTML.
  • Готова ли команда поддерживать серверную среду, и гибридную маршрутизацию.

Примеры классов маршрутов

Публичная посадочная страница

Статическая генерация (SSG) или серверный рендеринг (SSR)

Главные ограничения здесь обычно SEO, быстрый первый экран, предпросмотр ссылок и дешёвая доставка через сеть доставки контента (CDN).

Каталог и поиск

Серверный рендеринг (SSR), потоковый SSR или гибрид

Пользователь должен быстро увидеть структуру, но фильтры, наличие и рекомендации часто требуют свежих данных.

Оформление заказа и критический сценарий

Серверный рендеринг (SSR) + клиентская интерактивность

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

Личный кабинет или панель управления

Одностраничное приложение (SPA) или гибрид после входа

Индексируемость обычно вторична, зато важны состояние, быстрые переходы, кэш запросов и реакция на действия пользователя.

Документация и база знаний

Статическая генерация (SSG) / инкрементальная регенерация + острова

Большая часть страницы статична, а интерактивными могут быть поиск, песочницы, копирование команд и фильтры.

Связано

Content Delivery Network (CDN)

HTML-кэш, устаревший ответ с фоновой повторной проверкой и путь инвалидации часто определяют реальную цену серверного рендеринга (SSR) и статической генерации (SSG) сильнее, чем сам фреймворк.

Открыть главу

Архитектурные правила

Стратегия выбирается по классу маршрута, а не для всего продукта

Посадочная страница, поиск, оформление заказа и личный кабинет живут под разными ограничениями. Один глобальный режим рендеринга редко оптимален для всех .

Гидратация — отдельный эксплуатационный риск

Расхождение между серверным HTML и клиентским деревом часто проявляется только в реальных условиях: часовой пояс, локаль, фича-флаги, A/B-тесты и поздний приход данных.

Ранняя персонализация ломает дешёвое HTML-кэширование

Чем раньше в ответ попадают пользовательские блоки, тем сложнее использовать . Часто выгоднее отдать общий каркас и добавить персонализацию после первого отображения.

Сеть доставки контента (CDN) и пограничный слой являются частью архитектуры рендеринга

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

Загрузка данных задаёт реальную границу модели

Если экран зависит от многих источников, одних слов «» или «» мало. Важно решить, где работает , что можно показать частично и какие данные можно временно отдать в слегка устаревшем виде.

Компромиссы моделей рендеринга

Ось
Больше работы на клиенте
Больше работы до клиента
Главный вопрос
SEO и предпросмотр ссылок
Без серверного HTML часто требует обходных решений.
HTML доступен раньше и лучше подходит для индексации.
Нужно ли содержимое видеть без выполнения JavaScript?
TTFB / LCP
Время до первого байта (TTFB) может быть низким, но LCP зависит от бандла и API.
Первый HTML приходит раньше, но серверная работа может увеличить время до первого байта (TTFB).
Где быстрее и дешевле получить первый содержательный экран?
Инфраструктурная стоимость
Серверный контур проще, но больше работы уходит в браузер и API.
Нужны серверная среда, генерация на сборке или правила обновления готовых страниц.
Кто платит за вычисления: сервер, сеть доставки контента (CDN) или устройство пользователя?
Сложность отладки
Проще воспроизводить клиентские проблемы, но сложнее отлаживать первый экран.
Добавляются расхождения гидратации, кэш и различия среды.
Есть ли у команды диагностика для обеих сторон?
Персонализация
Проще добавить после загрузки пользовательского контекста.
Может разрушить общий кэш и усложнить ключи кэширования.
Какая часть страницы действительно персональная?
Кэшируемость
HTML почти общий, но данные часто кэшируются отдельно.
Сеть доставки контента (CDN) даёт большой выигрыш, если ответ не слишком уникален.
Что именно можно безопасно переиспользовать между пользователями?

Операционный чек-лист

  • У каждого ключевого маршрута есть целевые значения , LCP, размера бандла и времени до интерактивности.
  • Описаны ключи кэша, срок жизни HTML, правила и путь инвалидации.
  • Есть мониторинг ошибок гидратации, различий локали, фича-флагов и позднего прихода данных.
  • Понятно, кто владеет режимом рендеринга каждого класса маршрутов и меняет его при росте продукта.
  • Для медленных блоков спроектированы скелетон, показ слегка устаревших данных, частичный ответ и понятное сообщение об ошибке.

Типичные антипаттерны

Выбрать один режим рендеринга для всего продукта

Так команда быстро начинает оптимизировать посадочную страницу, оформление заказа и внутренний кабинет одними и теми же правилами, хотя ограничения у них разные.

Считать серверный рендеринг (SSR) только инструментом для SEO

Серверный HTML влияет ещё и на первый экран, предпросмотр ссылок, кэширование, стоимость персонализации и операционную сложность.

Не учитывать цену гидратации

Быстрый HTML не спасает страницу, если после него браузер долго выполняет клиентский код и блокирует взаимодействие.

Проектировать кэш сети доставки контента (CDN) после выбора фреймворка

Ключ кэша, инвалидация и персонализация определяют реальную стоимость и не меньше, чем сама среда выполнения.

Практический вывод

В зрелом продукте модель рендеринга обычно гибридная: публичные маршруты оптимизируются под SEO и пограничный кэш, контентные страницы получают статическую генерацию или острова, а тяжёлые сценарии после входа проектируются вокруг клиентской среды, предварительной загрузки маршрутов и контроля сложности гидратации.

Связанные главы

Чтобы отмечать прохождение, включи трекинг в Настройки