Какие есть виды генерации страниц в Next.js
Что проверяют
Знаете ли вы актуальную модель App Router и понимаете ли, что делает страницу динамической.
Как отвечать
В App Router режим определяется не отдельной функцией, а тем, что страница использует.
- Статическая генерация это поведение по умолчанию. Страница рендерится во время сборки, дальше отдаётся готовый HTML. Самый быстрый вариант;
- Инкрементальная регенерация: та же статика, но с указанием периода обновления. Первый запрос после истечения срока отдаёт старую версию и запускает пересборку в фоне. Именно так делают каталоги, где данные меняются, но не ежесекундно;
- Динамический рендеринг: страница собирается на каждый запрос. Включается автоматически, когда используется что-то, зависящее от запроса;
- Клиентский рендеринг: данные загружаются в браузере компонентом с директивой клиента;
- Потоковая отдача: страница отдаётся частями, медленные блоки заворачиваются в границу ожидания и приезжают позже. Работает поверх остальных режимов.
Что переводит страницу в динамический режим, и это самая практичная часть ответа: чтение куки или заголовков, использование параметров запроса, явное указание принудительной динамики. Важно, что вызов динамического API где угодно выше по дереву, включая общий макет, делает динамической всю группу маршрутов. Персонализацию поэтому выносят на клиент.
Отдельно про динамические сегменты: путь с параметром считается полностью динамическим, пока не объявлена функция генерации статических параметров. Она может возвращать даже пустой список, и этого достаточно, чтобы включить статику с последующей догенерацией по запросу.
Управление свежестью: кэширование запросов с тегами и точечный сброс по тегу или пути после изменения данных.
Правило выбора: статика по умолчанию, регенерация для данных с допустимой задержкой, динамика только там, где ответ действительно зависит от конкретного пользователя.
Где спотыкаются
Читают куки в общем макете и теряют статику на всём разделе.
Убирают генерацию статических параметров и не понимают, почему пропало кэширование.
Ставят принудительную динамику на всякий случай.
Путают кэш запросов и период регенерации страницы.