PassFront
  1. PassFront
  2. База знаний
  3. Server Side Rendering

Как устроено кеширование в Next.js App Router?

Server Side Rendering

Next.js кеширует результаты на нескольких уровнях, чтобы меньше работать на сервере и быстрее отвечать.

Уровни

  • Request Memoization — одинаковые fetch внутри одного рендера выполняются один раз.
  • Data Cache — результаты fetch хранятся между запросами и деплоями, пока их не инвалидируют.
  • Full Route Cache — готовый HTML и RSC-данные статических маршрутов.
  • Router Cache — клиентский кеш сегментов для быстрой навигации.

Управление

fetch(url, { cache: 'no-store' });             // всегда свежие данные
fetch(url, { next: { revalidate: 3600 } });    // обновлять раз в час
fetch(url, { next: { tags: ['posts'] } });     // метка для инвалидации
  • Использование cookies(), headers() или no-store делает маршрут динамическим.
  • Инвалидация: revalidatePath, revalidateTag.

Подвохи

Правила кеширования менялись между версиями Next.js, поэтому поведение по умолчанию нужно сверять с документацией текущей версии, а данные пользователя не должны попадать в общий кеш.

Коротко для собеседования

Есть кеши запроса, данных, маршрута и клиента. Управляем ими опциями fetch и инвалидацией по пути или тегу.

Другие вопросы раздела