SSR, SSG или ISR: как выбрать стратегию рендеринга и не переплатить за скорость
Три способа получить HTML пользователя
Современные фреймворки вроде Next.js не заставляют выбирать одну стратегию рендеринга для всего сайта — решение принимается на уровне отдельной страницы или маршрута. Три основных варианта:
- SSG (Static Site Generation) — HTML страницы генерируется один раз во время сборки (build time) и раздаётся как статический файл. Максимальная скорость отдачи, минимальная нагрузка на сервер — но контент обновляется только при следующей пересборке.
- SSR (Server-Side Rendering) — HTML собирается на сервере при каждом запросе. Контент всегда актуальный, но каждый запрос требует серверных вычислений, а время ответа зависит от нагрузки.
- ISR (Incremental Static Regeneration) — гибрид: страница отдаётся как статическая, но фоново пересобирается заново раз в заданный интервал (
revalidate) или по явному запросу — пользователь почти всегда получает быстрый статический ответ, а данные не устаревают навсегда.
По какому критерию выбирать
Главный вопрос — не «что быстрее», а «как часто меняются данные на этой странице и насколько критична их мгновенная актуальность»:
- Контент меняется редко или почти никогда (страница «О компании», статичный лендинг) — SSG: максимальная скорость и минимум серверных расходов, пересборка нужна только при реальном изменении контента.
- Контент меняется часто, но задержка в десятки секунд допустима (блог с CMS, каталог товаров, лента постов) — ISR: пользователь получает статическую скорость, а данные обновляются в фоне без ручной пересборки всего сайта.
- Контент обязан быть мгновенно точным для каждого запроса (баланс на счету, персонализированная лента, цена, зависящая от пользователя) — SSR: медленнее статики, но гарантированно свежие данные.
Частая ошибка
Выбирать SSR «на всякий случай» для всего сайта — самая частая избыточная трата ресурсов: если 90% страниц сайта не меняются каждую секунду, серверный рендеринг каждого запроса создаёт ненужную нагрузку и задержку там, где ISR или SSG справились бы быстрее и дешевле.
Практический вывод
Перед тем как выбирать стратегию для страницы, стоит явно ответить на вопрос: «Что случится, если пользователь увидит данные пятидесятисекундной давности?» Если ничего критичного — ISR почти всегда лучший баланс между скоростью статики и актуальностью сервера.
Источник: официальная документация Next.js по стратегиям рендеринга (nextjs.org/docs) и рекомендации web.dev по выбору между статическим и серверным рендерингом.