Skip to main content

Що таке ISR і яку проблему він вирішує?

ISR (Incremental Static Regeneration) - це механізм, який дозволяє оновлювати статичні сторінки після білда, без повного перезбирання застосунку.

Коротко:

SSG + автооновлення контенту = ISR


Яку проблему вирішує ISR

Проблема SSG

При класичному SSG:

  • сторінки генеруються один раз
  • щоб оновити контент -> потрібен новий білд
  • при великому сайті (1000+ сторінок) це:
    • довго
    • дорого
    • незручно

ISR прибирає залежність від повного ребілда.


Як працює ISR

На прикладі Next.js:

  1. Сторінка генерується статично
  2. Користувачі отримують HTML з CDN
  3. Минає заданий час (revalidate)
  4. Наступний запит:
  • користувач отримує стару сторінку
  • у фоні генерується нова версія
  1. Нова версія кешується і використовується далі

Без даунтайму. Без очікування.


У чому магія ISR

  • швидкість як у SSG
  • дані оновлюються автоматично
  • сервер не рендерить сторінку на кожен запит
  • дешевше, ніж SSR

Коли використовувати ISR

  • блоги
  • каталоги товарів
  • маркетплейси
  • курси і статті
  • сторінки з періодичним оновленням даних

Контент змінюється, але не щосекунди.


Коли ISR НЕ потрібен

  • персоналізовані дані
  • контент залежить від cookies / auth
  • realtime (чати, торги)

Там краще SSR або CSR.


Приклад (концептуально)

ts
fetch('https://api.example.com/posts', { next: { revalidate: 60 } // оновлювати раз на хвилину })
  • 60 секунд - припустима «застарілість» даних
  • після цього Next.js оновить сторінку автоматично

ISR vs SSG vs SSR (дуже коротко)

SSGISRSSR
HTML готовий заздалегідьТакТакНі
Оновлення без білдаНіТакТак
ШвидкістьДуже високаДуже високаВисока
Навантаження на серверВідсутнєНизькеВисоке

Відповідь для співбесіди

ISR - це механізм Next.js, який дозволяє оновлювати статичні сторінки після білда без повного перезбирання застосунку, зберігаючи швидкість SSG і актуальність даних.

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.