Naming four layers, Next 15 uncached fetch default, memoization ≠ Data Cache, one dynamic API poisons route, revalidate clears Router Cache, router.refresh() — core interview set.
Разбор
- Naming all four + which serves stale. The interview. Seniors point exact layer.
- Next 15 uncached-by-default
fetch. Biggest recent gotcha — Next 14 code silently changes on upgrade.
- Request Memoization ≠ Data Cache. One render, fetch-only, always on vs cross-request opt-in. Conflating = common miss.
- Single dynamic API poisons static for whole route. One
cookies() → Full Route Cache gone, per-request render.
revalidatePath/revalidateTag clear client Router Cache for affected routes — after server round-trip; mutation «не видна» until refresh.
router.refresh() client escape hatch — drop Router Cache, refetch current route server data.
Итог
Cache debugging = identify layer + know Next 15 default flip + invalidation path from Server Action to client refresh.