One of the tradeoffs of caching is that you may occasionally
receive stale data. What can you do if you believe (or know)
that a cache has given you stale data? You need some way to
refresh or validate the data received from the cache. HTTP
provides a couple of mechanisms for doing just that. Clients
can generate requests with
directives, the two most common of which are
no-cache first because it
has been around the longest.
no-cache directive notifies a cache
that it cannot return a cached copy. Even if a fresh
copy of the response—with a specific expiration
time—is in the cache, the client’s request must be
forwarded to the origin server.
RFC 2616 calls such a request an
“end-to-end validation” (Section 14.9.4). The
no-cache directive is sent when
you click on the Reload button on your
browser. In an HTTP request, it looks like this:
GET /index.html HTTP/1.1 Cache-control: no-cache
Recall that the
does not exist in the HTTP/1.0 standard. Instead, HTTP/1.0
clients use a
Pragma header for the
no-cache is the only
directive defined for the
header in RFC 1945.
backwards compatibility, RFC 2616 also defines the
Pragma header. In fact, many of the
recent HTTP/1.1 browsers still use
no-cache directive instead of the
Note that the
no-cache directive does not necessarily require the ...