Field Notes

HTTP caching in five headers

Cache-Control: max-age=N says a response stays fresh for N seconds. Until then a cache may reuse it without asking the server.

Cache-Control: no-cache does not mean "do not cache". A cache may store the response but must check with the server before reusing it.

Cache-Control: no-store is the one that means "do not keep a copy at all".

Cache-Control: private allows the browser's own cache but not shared caches such as a CDN.

ETag gives a response a version tag. The client sends it back in If-None-Match; if nothing changed, the server answers 304 Not Modified with no body.