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.