docs: platform portability and infrastructure documentation (#91237)
## Summary
Adds comprehensive documentation addressing platform partner feedback
about Next.js portability, infrastructure requirements, and CDN caching.
All technical claims verified against the codebase.
**New pages (5):**
- **Rendering Philosophy** — explains Next.js's component-level
static/dynamic spectrum, framework comparisons, functional vs.
performance fidelity definitions, CDN compatibility
- **Deploying to Platforms** — feature support matrix
(streaming/cache/edge requirements per feature), CDN infrastructure
table, minimum requirements, adapter guidance
- **How Revalidation Works** — tag system architecture (explicit + soft
tags with `_N_T_` prefix), HTML/RSC consistency requirements,
multi-instance coordination, graceful degradation
- **CDN Caching** — cache variability (`Vary` headers, `_rsc` param),
graceful degradation when headers are dropped, static prefetch caching
(PPR-scoped), pathname-based cache keying direction
- **PPR Platform Guide** — implementation tiers (origin-only through
edge), resume protocol (`next-resume` header, POST + body), artifact
storage, implementation checklist
**Expanded pages (4):**
- **Self-Hosting** — streaming infrastructure requirements,
multi-instance cache coordination, CDN guide links, graceful shutdown
details
- **ISR** — multi-instance caveats, tag propagation, background
regeneration billing, `x-nextjs-cache` monitoring
- **Cache Handlers** — distributed tag coordination (Redis example),
soft tags explanation, stream handling, error handling patterns
- **Adapter API** — runtime integration context, PPR chain headers
(`next-resume`), multi-instance cache entry propagation, fixed stale
`x-nextjs-resume` comment
## Key corrections from code verification
- Resume header is `next-resume`, not `x-nextjs-resume` (fixed in
existing adapterPath docs too)
- Resume requires POST with postponed state in body, not just a header
- `x-nextjs-cache` has 4 values including `REVALIDATED`, only emitted
outside minimal mode
- Soft tags use `_N_T_` prefix with layout paths (`_N_T_/blog/layout`),
not bare paths
- `stale-while-revalidate` in Cache-Control is conditional on `expire`
config
- Static prefetch caching without state tree only works for PPR-enabled
routes
- Fastly product renamed from `Compute@Edge` to `Compute`
---------
Co-authored-by: JJ Kasper <jj@jjsweb.site>
Co-authored-by: Tim Neutkens <tim@timneutkens.nl>