Что такое серверный рендеринг в Next.js
Что проверяют
Понимаете ли вы, чем он отличается от статики, и знаете ли, что его включает.
Как отвечать
Серверный рендеринг это сборка разметки страницы на каждый запрос. Браузер получает готовый HTML, показывает его сразу, а затем загружается код и происходит гидратация: React присоединяется к существующей разметке и делает страницу интерактивной.
Что это даёт: быстрый первый показ, работоспособность без ожидания скриптов, корректную индексацию и корректные предпросмотры ссылок, а также возможность отдать персонализированное содержимое.
Чем отличается от соседних режимов:
- статическая генерация делает страницу один раз при сборке. Быстрее всего, раздаётся через сеть доставки контента, но данные фиксируются на момент сборки;
- регенерация это статика с обновлением по времени: старая версия отдаётся мгновенно, а свежая пересобирается в фоне. Компромисс для данных, которым допустима задержка;
- серверный рендеринг нужен там, где ответ действительно зависит от конкретного запроса: личный кабинет, содержимое по правам, данные, устаревающие за секунды.
Как включается в современном маршрутизаторе: не отдельной функцией, а использованием того, что зависит от запроса. Чтение кук или заголовков, параметры строки запроса, явное указание принудительной динамики. Важно, что такой вызов где угодно выше по дереву, включая общий макет, делает динамической всю группу маршрутов. Это самая частая причина внезапной потери кэширования.
Цена: сервер работает на каждый запрос, время ответа складывается из обращений к данным, а раздать такую страницу через сеть доставки контента нельзя.
Что смягчает цену: потоковая отдача. Медленные части заворачиваются в границу ожидания, страница отдаётся немедленно, а тяжёлые блоки приезжают позже.
Правило: статика по умолчанию, регенерация для данных с допустимой задержкой, серверный рендеринг только для персонального.
Где спотыкаются
Читают куки в общем макете и теряют статику на всём разделе.
Ставят принудительную динамику на всякий случай.
Не используют потоковую отдачу и ждут самый медленный запрос.
Путают серверный рендеринг с регенерацией по времени.