Skip to main content

Які опції кешування є у `fetch`?

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


1. cache: 'force-cache' (типово)

Це стандартна поведінка fetch у Server Components.

Як працює

  • Перший запит → дані завантажуються і кладуться в кеш
  • Всі наступні запити → дані беруться з кешу
  • Новий запит до API не робиться, поки кеш не інвалідований

Що це означає на практиці

  • Сторінка поводиться як статична
  • Максимальна швидкість
  • Мінімальне навантаження на сервер

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

  • Публічні дані
  • Контент, який рідко змінюється
  • Блоги, документація, довідники

2. cache: 'no-store'

Цей режим повністю вимикає кешування.

Як працює

  • Кожен запит → новий похід за даними
  • Нічого не зберігається
  • Нічого не перевикористовується

Що це означає на практиці

  • Дані завжди актуальні
  • Сторінка стає динамічною
  • Сервер навантажується сильніше

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

  • Персональні дані
  • Авторизація
  • Профіль користувача
  • Дані, що залежать від cookies або headers

3. next: { revalidate: N }

Це режим контрольованого кешування - основа ISR.

Як працює

  • Дані кешуються
  • Кеш вважається валідним N секунд
  • Після цього Next.js оновлює дані

Важливо:

  • користувач не чекає оновлення
  • оновлення відбувається у фоні

Що це означає на практиці

  • Майже завжди свіжі дані
  • Без постійних запитів
  • Гарний баланс швидкості й актуальності

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

  • Каталоги
  • Новини
  • Стрічки
  • Часто оновлюваний публічний контент

4. Комбінування з headers і cookies

Якщо fetch:

  • використовує cookies
  • або читає headers запиту

Next.js може автоматично зробити його динамічним, навіть якщо ти явно не вказав no-store.

Це захист від:

  • випадкового кешування персональних даних
  • витоків інформації між користувачами

Коротка таблиця

ОпціяКешОновленняПоведінка
force-cacheТакНіСтатично
no-storeНіЗавждиДинамічно
revalidate: NТакЧерез N секISR

Головне, що варто запам'ятати

  • fetch у Server Components завжди серверний
  • Кеш увімкнений типово
  • Поведінка кешу - усвідомлений вибір, а не магія
  • Помилка у виборі режиму = або застарілі дані, або зайве навантаження

Всі ці механізми - ключова частина роботи з даними в Next.js.

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

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

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