Чем getServerSideProps отличается от getStaticProps в Next.js?
Server Side Rendering
`getServerSideProps` выполняется на сервере при каждом запросе, `getStaticProps` — один раз во время сборки (и при ISR повторно в фоне).
getStaticProps
- Страница готовится заранее и отдаётся как статический файл через CDN.
- Подходит для данных, которые не зависят от пользователя: блог, лендинг, каталог.
- С опцией
revalidateпревращается в ISR.
getServerSideProps
- Выполняется на каждый запрос, имеет доступ к cookie и заголовкам.
- Подходит для персонализированных страниц, данных, которые меняются постоянно.
- Медленнее и дороже: каждому запросу нужен сервер.
export async function getStaticProps() {
const posts = await fetchPosts();
return { props: { posts }, revalidate: 60 };
}
export async function getServerSideProps({ req }) {
const user = await getUser(req.cookies.session);
return { props: { user } };
}Выбор
Если данные можно подготовить заранее, берём статику. Серверный рендер оставляем для страниц, зависящих от запроса. В App Router этих функций нет: поведение задаётся опциями fetch и dynamic.
Коротко для собеседования
Static — на сборке, быстро и дёшево. ServerSide — на каждый запрос, гибко и дороже.