Visual RFC.
ALL RFCs / RFC 9111
Read the RFC ↗
RFC 9111 / CACHE DECISIONS

Revalidate with 304

03

A conditional request asks the origin whether a stored representation can still be used.

Related RFCs and changes

“Updates” changes part of an earlier RFC. “Obsoletes” replaces it. This list shows selected related documents.

DIAGRAM§ 4.3 ↗
RFC 9111 · § 4.3EXAMPLE
3 / 3
Revalidate with 304A cache sends its ETag condition upstream, receives a bodyless 304, and updates the stored response before serving its saved body.Validate the saved representationIllustrative stored ETag: "v7"CacheOriginIf-None-Match: "v7"304 Not Modifiedmetadata only · no replacement bodySaved body retainedMatching entry metadata updatedFreshen metadata and reuse matching stored content
03
Update the stored metadata.

The cache selects the matching entry, updates it under §4.3.4, and serves its saved content.

Protocol participantThreat or exceptionProtocol controlSimplified drawings · precise section references
KEY POINT

An unchanged representation can reuse its stored content.

  • Validation can send If-None-Match with stored entity tags, or an appropriate Last-Modified condition.
  • A 304 response has no representation content; it identifies stored responses that can be freshened under the matching rules.
  • Apply the 304 metadata to the identified stored responses before reusing their content. A changed representation can instead produce a new full response.
DETAILS

A 304 is not an empty replacement for the saved body. If a cache has no suitable stored response, it cannot invent the missing representation.

Read the RFC section ↗

Diagrams simplify the RFC. Read the linked sections for complete requirements.

Privacy
All chapters in this RFC
  1. Store and select a response
  2. Freshness and age
  3. Revalidate with 304
  4. Cache-Control directives
  5. Private and shared caches
  6. Stale responses and invalidation
RFC 9700 / CHAPTERS

Chapters

For full details, tables, algorithms, and exceptions, read the original RFC.

RFC status and corrections ↗