Sobes.tech
Back to questions
Middle
2

Ты знаком с Next.js? В чём разница между SSR, SSG, ISR и CSR? Когда бы что использовал?

Companies where asked
Chulakov

Answer from AI

sobes.tech AI

В Next.js есть несколько способов рендеринга страниц:

  • SSR (Server-Side Rendering) — страница генерируется на сервере при каждом запросе. Подходит для динамического контента, который часто меняется и должен быть актуальным.

  • SSG (Static Site Generation) — страницы генерируются один раз во время сборки (build time) и потом отдаются как статические файлы. Хорошо для контента, который редко меняется, например, блог или документация.

  • ISR (Incremental Static Regeneration) — гибрид SSG и SSR. Позволяет обновлять статические страницы после деплоя с заданным интервалом (revalidate). Используется, когда нужно быстро отдавать статический контент, но при этом обновлять его без полной пересборки.

  • CSR (Client-Side Rendering) — рендеринг происходит на клиенте в браузере с помощью JavaScript. Используется для интерактивных частей приложения, где данные загружаются динамически после загрузки страницы.

Когда использовать:

  • SSR — для страниц с часто меняющимися данными, требующих SEO.
  • SSG — для статического контента с редкими обновлениями.
  • ISR — когда нужно сочетать преимущества SSG и возможность обновления данных без полной сборки.
  • CSR — для пользовательских панелей, где SEO не критично, и важна интерактивность.

Пример:

// SSR
export async function getServerSideProps() {
  const data = await fetchData();
  return { props: { data } };
}

// SSG
export async function getStaticProps() {
  const data = await fetchData();
  return { props: { data } };
}

// ISR
export async function getStaticProps() {
  const data = await fetchData();
  return { props: { data }, revalidate: 60 };
}