RFC 9111 - HTTP Caching
Published: June 2022
Status: Internet Standard (STD 98)
Authors: R. Fielding (Ed., Adobe), M. Nottingham (Ed., Fastly), J. Reschke (Ed., greenbytes)
Obsoletes: RFC 7234
Abstract
The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document defines HTTP caches and the associated header fields that control cache behavior or indicate cacheable response messages.
This document obsoletes RFC 7234.
Table of Contents
-
- 1.1 Requirements Notation
- 1.2 Syntax Notation
- 1.2.1 Imported Rules
- 1.2.2 Delta Seconds
-
3. Storing Responses in Caches
- 3.1 Storing Header and Trailer Fields
- 3.2 Updating Stored Header Fields
- 3.3 Storing Incomplete Responses
- 3.4 Combining Partial Content
- 3.5 Storing Responses to Authenticated Requests
-
4. Constructing Responses from Caches
- 4.1 Calculating Cache Keys with the Vary Header Field
- 4.2 Freshness
- 4.2.1 Calculating Freshness Lifetime
- 4.2.2 Calculating Heuristic Freshness
- 4.2.3 Calculating Age
- 4.2.4 Serving Stale Responses
- 4.3 Validation
- 4.3.1 Sending a Validation Request
- 4.3.2 Handling a Received Validation Request
- 4.3.3 Handling a Validation Response
- 4.3.4 Freshening Stored Responses upon Validation
- 4.3.5 Freshening Responses with HEAD
- 4.4 Invalidating Stored Responses
-
- 5.1 Age
- 5.2 Cache-Control
- 5.2.1 Request Directives
- 5.2.2 Response Directives
- 5.2.3 Extension Directives
- 5.2.4 Cache Directive Registry
- 5.3 Expires
- 5.4 Pragma
- 5.5 Warning
-
- 7.1 Cache Poisoning
- 7.2 Timing Attacks
- 7.3 Caching of Sensitive Information
-
- 8.1 Field Name Registration
- 8.2 Cache Directive Registration
- 8.3 Warn Code Registry
-
- 9.1 Normative References
- 9.2 Informative References
Appendices
Related Resources
- Official Text: RFC 9111
- Official Page: RFC 9111 DataTracker
- Errata: RFC Editor Errata
- Related RFCs:
Core Concept: HTTP caching significantly improves performance by storing and reusing previous responses, reducing latency and network overhead, thereby improving user experience and reducing server load.