В чем разница SSG (Static Site Generation) и SSR (Server Side Rendering)
Что проверяют
Понимаете ли вы, когда именно строится HTML и какой ценой. Вопрос практический: от выбора зависят и скорость, и стоимость, и свежесть данных.
Как отвечать
Разница в моменте генерации. При статической генерации HTML собирается на этапе сборки, лежит готовым файлом и раздаётся хоть из CDN. При серверном рендеринге HTML собирается на каждый запрос, поэтому может учитывать данные конкретного пользователя.
Что из этого следует:
- скорость и нагрузка: статика отдаётся мгновенно и почти ничего не стоит. Серверный рендеринг требует работающего сервера, времени на запрос данных и масштабирования под нагрузку;
- свежесть данных: у статики она ограничена моментом сборки, у серверного рендеринга всегда актуальная;
- персонализация: цена, корзина, личные рекомендации возможны только при рендеринге на запрос (или дозагрузкой на клиенте поверх статики);
- число страниц: сборка десятков тысяч страниц занимает время, и это реальное ограничение статики.
Обязательно назовите промежуточный вариант, ради которого вопрос часто и задают: инкрементальная регенерация. Страница отдаётся из кеша как статика, но по истечении заданного срока перестраивается в фоне. Так живут каталоги и блоги, где данные меняются, но не ежесекундно.
Практический ориентир: маркетинговые страницы, документация, блог это статика; личный кабинет, корзина, выдача с фильтрами по пользователю это рендеринг на запрос; каталог и карточки товаров это статика с регенерацией.
Где спотыкаются
Путают серверный рендеринг с гидратацией: HTML пришёл с сервера, но интерактивность появляется после загрузки и запуска JavaScript.
Считают, что статика не умеет показывать свежие данные. Умеет, через регенерацию и клиентскую дозагрузку.
Забывают, что чтение куки или заголовков превращает страницу в динамическую и отключает кеширование.