advanced

Caching

Рассуждайте о request memoization, data cache, full-route cache, router cache, CDN и cache invalidation.

В Next.js несколько кэшей: request memoization при render, Data Cache для `fetch`, Full Route Cache для static HTML/RSC и client Router Cache при навигации. CDN и browser caches — вне фреймворка.

| Слой | Scope | Типичная invalidation | |------|-------|----------------------| | Request memo | Один render | Новый запрос | | Data Cache | Результаты fetch | revalidate/time/tags | | Full Route Cache | Static routes | revalidatePath/Tag | | Router Cache | Client navigations | Hard refresh, мутации |

На интервью: какой слой обслуживает повторного посетителя и что делает данные stale.

Типовые ошибки: `fetch` всегда без кэша, отключение всех кэшей по умолчанию, персональные данные в общих cache keys.

Компромисс: производительность против предсказуемой freshness — документируйте оба.

Чеклист:

  • Дефолтный кэш для каждой опции fetch.
  • Теги связанных чтений для групповой invalidation.
  • Auth-scoped данные — dynamic или private.
  • CDN headers отдельно от Data Cache.