Visual RFC.
ALL RFCs / RFC 8246
Read the RFC ↗
RFC 8246 / IMMUTABLE HTTP RESPONSES

Let a proxy answer from its fresh cache

04

An intermediary can use immutable too, while client validation signals still matter.

RFC 8246 · § 2.1EXAMPLE
3 / 3
Let a proxy answer from its fresh cacheAn eligible fresh immutable 200 response with ETag "v1" is stored at a proxy. Ordinary GET receives local 200 with bytes. A separate matching If-None-Match v1 request receives local 304 without origin contact. A third request signals no-cache, so skip advice is not applied; conditional validation reaches the origin and this unchanged example returns 304. Status depends on the request and result, not the immutable flag alone.A fresh proxy cache can answer locallyClientProxy cacheOriginFresh immutable responseStored ETag: "v1"Separate request: Cache-Control: no-cacheIf-None-Match: "v1"validate "v1"304 · unchanged304Client signals validation; skip advice is bypassed
03
Respect the client’s no-cache signal.

Separate request: Cache-Control: no-cache requests validation. The proxy does not apply immutable’s skip advice; here it validates with the origin, receives 304 and answers the client.

Source for this drawing: RFC 8246 · Read RFC section 2.1 ↗

Protocol participantThreat or exceptionProtocol controlSimplified drawings · precise section references
New to this? Start hereA quick picture + helpful background

A message needs an address.

Think of a packet as a small addressed envelope. Devices pass it onward; transport protocols decide what delivery promises an application gets.

Helpful first, if these ideas are unfamiliar

These pictures are analogies to help you learn. The linked RFC explains the actual rules.

Terms in this drawing
Proxy
An intermediary that can receive requests and store responses.
ETag
An HTTP representation validator, shown as an example tag.
304
Not Modified: a conditional response without the representation body.
Related RFCs and changes

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

KEY POINT

Skipping the origin does not require one response status.

  • Proxies SHOULD skip conditional revalidation of fresh immutable responses unless the client signals that validation is necessary, for example with a no-cache request directive.
  • A proxy bypassing conditional revalidation can return 304 or 200 depending on the request headers it received. Immutable does not require every cache hit to be304.
  • The example proxy stores a fresh 200 response with ETag "v1". For a matching If-None-Match request, it returns304 locally; an ordinary nonconditional GET can receive 200 with the stored content.
DETAILS

The no-cache branch is a separate example with a client validation signal, not a consequence of the prior local304. Its illustrative unchanged-origin result is304, not a guarantee that validation always finds unchanged content. Shared-cache eligibility, validators and conditional evaluation still follow ordinary HTTP rules (RFC9111§§4.3.2,5.2.1.4). no-cache does not mean no-store.

Read the RFC section ↗

All chapters in RFC 8246

Drawing view

Scroll the drawing to see every part. Playback controls stay above it.

RFC 9700 / CHAPTERS

Chapters

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

RFC status and corrections ↗