Кто платит regeneration, minimum revalidate, dynamic API opts out, revalidate = 0, serverless per-instance cache — частые gotchas ISR.
Разбор
- «Who pays regeneration cost?» Not triggering user — stale instantly. Background render для next visitor. «User waits rebuild» = SSR, не ISR.
- Route window = minimum of all
revalidate. One fetch revalidate: 10 в page revalidate: 3600 → whole route 10s.
- Dynamic API opts out entirely.
cookies(), headers(), searchParams → fully dynamic, Full Route Cache не applies — «ISR не кэширует» = accidental dynamic API.
revalidate = 0 is not ISR — force-dynamic.
- Serverless cache per-instance без shared storage — each container regenerates independently; self-hosted нужен shared cache handler.
Итог
ISR interview = stale-while-revalidate semantics + minimum window rule + dynamic API poison pill.