Prove that the save and stale read are different boundaries
Use one invented record and retain its authoritative saved value. Read it through the agreed test route while recording which isolated instance served each response. Compare the origin response with the browser and any test proxy/CDN. Alternating values suggest a useful hypothesis, not proof that the cache handler is wrong.
- Record Next.js version, router, Cache Components setting and cache handler configuration.
- Separate data staleness from old JavaScript or missing assets during a rollout.
- Do not add live internal-server identities to public responses just to investigate.
Choose the actual caching model
The current previous-model caching guide explicitly excludes projects using Cache Components. The self-hosting guide explains per-instance caches and tag coordination; merely storing entries in one backend does not prove every instance learns invalidations. Apply the correct version's handler interface and retain narrowly scoped cache keys for user-specific data.
- Do not copy a sample in-memory handler as a complete distributed-storage implementation.
- Do not make private responses publicly cacheable to hide the inconsistency.
- A browser refresh is not evidence that every origin cache was invalidated.
Acceptance needs more than the server that saved
An authored test writes the synthetic update through instance A, then reads through A and B under the stated freshness policy. Repeat with the roles reversed and with the agreed browser path. Define the permitted stale interval and behaviour when invalidation storage is unavailable; neither immediate global freshness nor a throughput gain is implied.
- The test must record the value and instance, not just successful HTTP responses.
- If identifiers or cache keys are permission-sensitive, add two disposable users and assert no cross-user result.
- No distributed implementation or test execution is claimed here.
Non-fit, safety and priced route
One deterministic ordinary application defect with a synthetic reproduction may fit fix-one-bug-with-regression-test, from £295 only after bounded reproduction and a fixed repair quote. A distributed-cache redesign, availability engineering or performance study is outside that price and needs separate scope with the existing infrastructure operator. If there is possible cross-user data leakage, use the security incident route rather than the ordinary bug offer.
- Initial inputs are the synthetic expected/actual value, topology description and version, not production records, code or cache credentials.
- Proposed prices do not prove a buyer will pay; private access and production release remain separately gated.
Sources and limits
- Next.js: self-hosting cache coordination; MIT-licensed project documentation Checked 2026-10-11.
- Default self-hosted caching is per-instance without a shared backend.
- Tag invalidation on one instance is not automatically propagated to other instances.
- Current custom cache-handler guidance includes shared tag coordination.
- Next.js: previous cache model explicitly excludes Cache Components Checked 2026-10-11.
- The previous-model guide explicitly assumes Cache Components are not enabled.
- Cache options and revalidation must be chosen for the project's actual model.
- Current reproducible-bug scope Checked 2026-10-11.