Ты знаком с Next.js? В чём разница между SSR, SSG, ISR и CSR? Когда бы что использовал?
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 };
}