CSR, SSR, SSG, ISR — разница между стратегиями рендеринга
В современных фронтенд-приложениях существует несколько стратегий рендеринга. Они определяют, когда и где будет отрисован HTML-контент: на клиенте, на сервере или заранее.
CSR — Client-Side Rendering (Рендеринг на клиенте)
HTML загружается пустым, весь контент и логика загружаются через JavaScript на стороне клиента.
Как работает CSR
- Сервер отдаёт пустой HTML-файл
- JS-приложение инициализируется в браузере
- Данные подгружаются через API
Плюсы CSR
- Быстрый отклик после загрузки
- Нет нагрузки на сервер
- Полный контроль на клиенте
Минусы CSR
- Плохая SEO (если не используется SSR/пререндеринг)
- Медленный Time-to-Content
- Требуется JS для отображения
SSR — Server-Side Rendering (Рендеринг на сервере)
HTML отрисовывается на сервере при каждом запросе. Пользователь получает уже сгенерированную страницу.
Как работает SSR
- Клиент делает запрос → сервер генерирует HTML
- После загрузки страница гидратируется React-приложением
Плюсы SSR
- Отличная SEO
- Быстрый First Contentful Paint
- Подходит для динамического контента
Минусы SSR
- Нагрузка на сервер
- Более сложная архитектура
- Задержка при первом запросе
SSG — Static Site Generation (Статическая генерация)
HTML-страницы генерируются на этапе билда и размещаются как статические файлы.
Как работает SSG
- При сборке проекта (
npm run build
) генерируются HTML-файлы - Сервер просто отдаёт уже готовые страницы
Плюсы SSG
- Молниеносная скорость
- Отличная SEO
- Почти нулевая нагрузка на сервер
Минусы SSG
- Контент не обновляется без нового билда
- Не подходит для часто обновляемых страниц
ISR — Incremental Static Regeneration (Инкрементальная генерация)
Комбинация SSG + SSR: страницы генерируются на лету, но кэшируются. Используется в Next.js.
Как работает ISR
- Сначала отдаётся закэшированная версия страницы
- Если страница устарела — перегенерируется в фоне
export async function getStaticProps() {
return {
props: {},
revalidate: 60, // страница пересобирается раз в 60 сек
};
}
Плюсы ISR
- Скорость SSG + актуальность SSR
- Гибкость обновления контента
- Отлично подходит для блогов, маркетплейсов
Минусы ISR
- Нужно уметь правильно настроить кэш и revalidate
Сравнительная таблица
Характеристика | CSR | SSR | SSG | ISR |
---|---|---|---|---|
Где рендерится? | В браузере | На сервере | При билде | На сервере + кеш |
SEO | Плохо | Отлично | Отлично | Отлично |
Скорость загрузки | Средняя | Средняя | Очень быстрая | Быстрая |
Подходит для | SPA, дашборды | Новостные сайты | Блоги, маркетинг | E-commerce, контент |
Обновление данных | Через API | На каждый запрос | Только при билде | Через revalidate |
Вывод:
- CSR — для динамичных приложений, где SEO не важен (админки, личные кабинеты).
- SSR — для динамических публичных страниц.
- SSG — для маркетинговых лендингов, блогов.
- ISR — лучшее из двух миров: скорость и актуальность.