Pragma
The HTTP Pragma request header is a legacy HTTP/1.0 caching directive retained for backward compatibility with clients and caches predating Cache-Control. The specification defines Pragma for requests only. Its behavior in responses was never specified.
Usage
The Pragma header carries the no-cache directive,
which is semantically equivalent to
Cache-Control: no-cache. When a
Cache-Control header is present, the
Pragma value is ignored.
The header originated in HTTP/1.0, which had
no Cache-Control mechanism. HTTP/1.1
introduced Cache-Control as the
replacement, making Pragma obsolete for all
practical purposes. Servers and proxies still include
Pragma as a defense-in-depth measure to ensure
older Caching layers honor the no-cache intent.
The specification defines Pragma solely for backward compatibility. New implementations rely on Cache-Control instead.
Legacy
Pragma is an HTTP/1.0 artifact. Cache-Control provides the same behavior and more. Include Pragma only when communicating with legacy caches.
Directives
no-cache
The no-cache directive instructs caches to
revalidate the response with the origin
before serving a stored copy. The behavior matches
Cache-Control: no-cache.
Pragma: no-cache
Example
A request including both Pragma and
Cache-Control to guarantee
compatibility across HTTP/1.0 and
HTTP/1.1 intermediaries. Modern caches use the
Cache-Control value and ignore Pragma.
Cache-Control: no-cache
Pragma: no-cache
A standalone Pragma directive in a request targeting an older proxy server lacking Cache-Control support.
Pragma: no-cache
Takeaway
The Pragma header provides no-cache semantics
for HTTP/1.0 caches.
Cache-Control supersedes Pragma
in all modern HTTP implementations.