Back to Blog

🧠 Механизмы кэширования в Next.js (App Router)

Anastasiia Berest 4 min read

1️⃣ Request Memoization

— Что это: Кэширование результата функций (например, fetch, cookies(), headers() и т.п.) во время одного запроса.

— Где работает: Только на сервере, внутри одного HTTP-запроса.

— Зачем: Чтобы одна и та же функция не вызывалась многократно, если её результат не изменится в пределах одного запроса.

— Когда очищается: После завершения запроса.

💡 Пример: fetch() в компоненте вызывается несколько раз — результат будет взят из памяти, а не выполнен повторно.

2️⃣ Data Cache

— Что это: Кэш данных, полученных через fetch() (в app/ маршрутах).

— Где работает: На сервере (может быть глобальным).

— Зачем: Хранить данные между запросами пользователей и даже между деплойментами, если нужно.

— Управление: Через параметры fetch:

fetch(url, { next: { revalidate: 60 } }) // ISR-подобное поведение

fetch(url, { cache: 'no-store' }) // отключить кэш

3️⃣ Full Route Cache

— Что это: Кэш целых маршрутов — HTML + RSC (React Server Components) payload.

— Где работает: На сервере.

— Зачем: Ускорение маршрутизации и снижение нагрузки — отдаются заранее сгенерированные страницы.

— Обновление: Через revalidate или вручную (инвалидировать можно через API).

💡 Это как ISR (Incremental Static Regeneration), но для App Router.

4️⃣ Router Cache

— Что это: Кэш маршрутизатора React в браузере.

— Где работает: На клиенте.

— Зачем: При переключении между страницами в пределах SPA — сохраняются состояние, компоненты, данные.

— Когда очищается: При навигации или фокусе на новой странице.

Сценарий → Используемый кэш:

— Повторный fetch() в компоненте → Request Memoization

— Один и тот же API-запрос между пользователями → Data Cache

— Навигация между страницами → Router Cache (на клиенте)

— Быстрая отдача заранее сгенерированного HTML → Full Route Cache

Anastasiia Berest

Anastasiia Berest

Senior Web UI Engineer

I'm a web development passionate about creating meaningful digital experiences.