foundation
SSR
Рендер на запрос, когда персонализация, request data или всегда свежий контент важнее cacheability.
SSR генерирует HTML (и RSC payload) на каждый запрос, когда данные должны быть свежими, персональными или зависеть от авторизации. В App Router dynamic segments, cookies, headers или `export const dynamic = 'force-dynamic'` включают request-time rendering.
export const dynamic = 'force-dynamic';
export default async function Page() {
const user = await getUserFromCookies();
return <Dashboard data={await fetchDashboard(user.id)} />;
}
SSR улучшает первый осмысленный HTML для краулеров и пользователей, но увеличивает нагрузку на сервер и TTFB относительно кэшированного static output.
На интервью: когда SSR лучше ISR и как request data остаётся на сервере.
Типовые ошибки: SSR для глобально одинакового контента, N+1 fetch на запрос, утечка секретов в serialized props.
Компромисс: freshness и персонализация против стоимости сервера и cache hit rate.
Чеклист:
- SSR при разном output на запрос.
- Батчите server fetch; избегайте waterfalls.
- Секреты и токены только на сервере.
- Мониторьте TTFB и ошибки.