Guide · missing versioned assets · 13 Oct 2026
When a missing asset response can stay missing
A stale document can request an asset that returned 404 or 410. HTTP allows caches to reuse some such responses, but it does not require a cache to store them or assign a universal negative-cache lifetime.
Short answer
404 and 410 are heuristically cacheable status codes, so a cache may use a stored response for an eligible GET or HEAD. If an HTTP cache stores a 404 for /assets/app.v7.js, restoring the bytes at that same URI may not immediately change what that cache returns: reuse can continue until the stored response expires, is validated, or is removed by an applicable action. This is an implication of HTTP cache rules, not an observed deployment result.
Cacheable does not mean cached. Status alone does not tell you whether a cache retained the response, what lifetime it chose, or which layer supplied it.
The sequence to check
What response directives do
| Directive on the error response | Relevant effect | Does it remove an older stored 404? |
|---|---|---|
Cache-Control: no-store | A compliant HTTP cache must not store or reuse this response. | No. It is not a purge instruction. |
Cache-Control: no-cache | A cache may store it, but must validate it before reuse. | No. |
max-age=N or shared s-maxage=N | Sets explicit freshness under the applicable private/shared cache rules. | No. |
| No explicit freshness | A cache may apply a heuristic to a heuristically cacheable response; the RFCs give no universal lifetime or algorithm. | No defined purge effect. |
A new versioned URI ordinarily avoids reuse of the old URI's response, subject to the actual cache key and application routing. It does not clear the old URL or establish that every layer uses the intended key.
Identify the responder; do not infer it from Age
Preserve the exact failing URL, method, time, status, body, and request/response headers. A trusted, named Cache-Status member or per-hop log is stronger evidence of an HTTP-cache decision. Age reports estimated response age; by itself it does not identify the cache or hop. Correlate the request with origin logs where available.
In the browser Network panel, check whether a request occurred and whether a service worker handled it; inspect the exact Cache Storage entry and application fallback path. A service worker or application may supply a response that resembles an HTTP 404.
Continue with the relevant layer
- Read the dated RFC and documentation review for status semantics, freshness, validation, invalidation, and source limits.
- For general stale responses and validation, see When stale HTTP content is allowed.
- For worker state and script-managed Cache Storage, see Service-worker updates.
- For the broader deployment and evidence workflow, use the deployment and incident runbook.
- For provider-specific behavior, use the existing CloudFront TTL/invalidation and Cloudflare Cache Rules reports. This guide does not generalize their product settings.