Один ключевой вопрос
Где и когда собирается HTML?
Рендеринг (превращение кода и данных в готовую страницу) — это не магия, а конкретное место и момент. Любое веб-приложение делает это одним из трёх способов.
CSR (Client-Side Rendering — отрисовка на стороне клиента) — браузер получает почти пустой HTML-файл и файл JavaScript. Весь контент страницы JS-код рисует прямо в браузере на устройстве пользователя. Это классическая схема для SPA (Single Page Application — одностраничное приложение), например React + Vite. Плюс: после первой загрузки навигация мгновенная и полностью интерактивная. Минусы: первый показ медленнее (пока JS не отработал, пользователь видит пустой экран), и поисковые роботы часто получают тот же пустой HTML — значит, SEO (видимость в поисковых системах) страдает.
SSR (Server-Side Rendering — отрисовка на стороне сервера) — под каждый запрос сервер собирает готовый HTML и отправляет его браузеру. Пользователь видит контент сразу, поисковик тоже получает живую страницу. Минус: при большом трафике сервер нагружен сильнее, и инфраструктура дороже.
SSG (Static Site Generation — статическая генерация) — страницы собираются один раз заранее, в момент сборки (build-time), и хранятся как готовые HTML-файлы. Отдаются мгновенно из CDN (сеть доставки контента — серверы рядом с пользователем по всему миру), дёшево и надёжно. Идеально для блогов, лендингов, документации, где контент меняется редко. Минус: если данные постоянно меняются, придётся пересобирать сайт при каждом изменении.
Существует ещё ISR (Incremental Static Regeneration — инкрементальная статическая регенерация) — это гибрид: страницы статические, но автоматически пересобираются через заданный промежуток времени. Одной фразой: статика, которая умеет стареть и обновляться сама.
| Режим | Когда хорош | Минус |
|---|---|---|
| CSR | Интерактивные приложения за логином (дашборды, кабинеты) | Медленный первый показ, слабый SEO |
| SSR | Нужен SEO и быстрый первый показ (интернет-магазин, новостной сайт) | Нагрузка на сервер при пиковом трафике |
| SSG | Контент меняется редко (блог, лендинг, документация) | Не подходит для данных, которые обновляются в реальном времени |
📌 Практическое правило: если страница должна быть видна в поиске и контент публичный — нужен SSR или SSG. Если это закрытый кабинет за логином — хватит CSR.