PassFront
  1. PassFront
  2. База знаний
  3. Server Side Rendering

Чем 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 — на каждый запрос, гибко и дороже.

Другие вопросы раздела