| rfc9111v12.txt | rfc9111.txt | |||
|---|---|---|---|---|
| Internet Engineering Task Force (IETF) R. Fielding, Ed. | Internet Engineering Task Force (IETF) R. Fielding, Ed. | |||
| Request for Comments: 9111 Adobe | Request for Comments: 9111 Adobe | |||
| STD: 97 M. Nottingham, Ed. | STD: 98 M. Nottingham, Ed. | |||
| Obsoletes: 7234 Fastly | Obsoletes: 7234 Fastly | |||
| Category: Standards Track J. Reschke, Ed. | Category: Standards Track J. Reschke, Ed. | |||
| ISSN: 2070-1721 greenbytes | ISSN: 2070-1721 greenbytes | |||
| April 2022 | June 2022 | |||
| HTTP Caching | HTTP Caching | |||
| Abstract | Abstract | |||
| The Hypertext Transfer Protocol (HTTP) is a stateless application- | The Hypertext Transfer Protocol (HTTP) is a stateless application- | |||
| level protocol for distributed, collaborative, hypertext information | level protocol for distributed, collaborative, hypertext information | |||
| systems. This document defines HTTP caches and the associated header | systems. This document defines HTTP caches and the associated header | |||
| fields that control cache behavior or indicate cacheable response | fields that control cache behavior or indicate cacheable response | |||
| messages. | messages. | |||
| skipping to change at line 476 ¶ | skipping to change at line 476 ¶ | |||
| * the presented target URI (Section 7.1 of [HTTP]) and that of the | * the presented target URI (Section 7.1 of [HTTP]) and that of the | |||
| stored response match, and | stored response match, and | |||
| * the request method associated with the stored response allows it | * the request method associated with the stored response allows it | |||
| to be used for the presented request, and | to be used for the presented request, and | |||
| * request header fields nominated by the stored response (if any) | * request header fields nominated by the stored response (if any) | |||
| match those presented (see Section 4.1), and | match those presented (see Section 4.1), and | |||
| * the stored response does not contain the no-cache cache directive | * the stored response does not contain the no-cache directive | |||
| (Section 5.2.2.4), unless it is successfully validated | (Section 5.2.2.4), unless it is successfully validated | |||
| (Section 4.3), and | (Section 4.3), and | |||
| * the stored response is one of the following: | * the stored response is one of the following: | |||
| - fresh (see Section 4.2), or | - fresh (see Section 4.2), or | |||
| - allowed to be served stale (see Section 4.2.4), or | - allowed to be served stale (see Section 4.2.4), or | |||
| - successfully validated (see Section 4.3). | - successfully validated (see Section 4.3). | |||
| skipping to change at line 1643 ¶ | skipping to change at line 1643 ¶ | |||
| The change controller for the following registrations is: "IETF | The change controller for the following registrations is: "IETF | |||
| (iesg@ietf.org) - Internet Engineering Task Force". | (iesg@ietf.org) - Internet Engineering Task Force". | |||
| 8.1. Field Name Registration | 8.1. Field Name Registration | |||
| IANA has updated the "Hypertext Transfer Protocol (HTTP) Field Name | IANA has updated the "Hypertext Transfer Protocol (HTTP) Field Name | |||
| Registry" at <https://www.iana.org/assignments/http-fields>, as | Registry" at <https://www.iana.org/assignments/http-fields>, as | |||
| described in Section 18.4 of [HTTP], with the field names listed in | described in Section 18.4 of [HTTP], with the field names listed in | |||
| the table below: | the table below: | |||
| +===============+============+======+==========+ | +===============+============+=========+==========+ | |||
| | Field Name | Status | Ref. | Comments | | | Field Name | Status | Section | Comments | | |||
| +===============+============+======+==========+ | +===============+============+=========+==========+ | |||
| | Age | permanent | 5.1 | | | | Age | permanent | 5.1 | | | |||
| +---------------+------------+------+----------+ | +---------------+------------+---------+----------+ | |||
| | Cache-Control | permanent | 5.2 | | | | Cache-Control | permanent | 5.2 | | | |||
| +---------------+------------+------+----------+ | +---------------+------------+---------+----------+ | |||
| | Expires | permanent | 5.3 | | | | Expires | permanent | 5.3 | | | |||
| +---------------+------------+------+----------+ | +---------------+------------+---------+----------+ | |||
| | Pragma | deprecated | 5.4 | | | | Pragma | deprecated | 5.4 | | | |||
| +---------------+------------+------+----------+ | +---------------+------------+---------+----------+ | |||
| | Warning | obsoleted | 5.5 | | | | Warning | obsoleted | 5.5 | | | |||
| +---------------+------------+------+----------+ | +---------------+------------+---------+----------+ | |||
| Table 1 | Table 1 | |||
| 8.2. Cache Directive Registration | 8.2. Cache Directive Registration | |||
| IANA has updated the "Hypertext Transfer Protocol (HTTP) Cache | IANA has updated the "Hypertext Transfer Protocol (HTTP) Cache | |||
| Directive Registry" at <https://www.iana.org/assignments/http-cache- | Directive Registry" at <https://www.iana.org/assignments/http-cache- | |||
| directives> with the registration procedure per Section 5.2.4 and the | directives> with the registration procedure per Section 5.2.4 and the | |||
| cache directive names summarized in the table below. | cache directive names summarized in the table below. | |||
| +==================+==================================+ | +==================+==================+ | |||
| | Cache Directive | Reference | | | Cache Directive | Section | | |||
| +==================+==================================+ | +==================+==================+ | |||
| | max-age | Section 5.2.1.1, Section 5.2.2.1 | | | max-age | 5.2.1.1, 5.2.2.1 | | |||
| +------------------+----------------------------------+ | +------------------+------------------+ | |||
| | max-stale | Section 5.2.1.2 | | | max-stale | 5.2.1.2 | | |||
| +------------------+----------------------------------+ | +------------------+------------------+ | |||
| | min-fresh | Section 5.2.1.3 | | | min-fresh | 5.2.1.3 | | |||
| +------------------+----------------------------------+ | +------------------+------------------+ | |||
| | must-revalidate | Section 5.2.2.2 | | | must-revalidate | 5.2.2.2 | | |||
| +------------------+----------------------------------+ | +------------------+------------------+ | |||
| | must-understand | Section 5.2.2.3 | | | must-understand | 5.2.2.3 | | |||
| +------------------+----------------------------------+ | +------------------+------------------+ | |||
| | no-cache | Section 5.2.1.4, Section 5.2.2.4 | | | no-cache | 5.2.1.4, 5.2.2.4 | | |||
| +------------------+----------------------------------+ | +------------------+------------------+ | |||
| | no-store | Section 5.2.1.5, Section 5.2.2.5 | | | no-store | 5.2.1.5, 5.2.2.5 | | |||
| +------------------+----------------------------------+ | +------------------+------------------+ | |||
| | no-transform | Section 5.2.1.6, Section 5.2.2.6 | | | no-transform | 5.2.1.6, 5.2.2.6 | | |||
| +------------------+----------------------------------+ | +------------------+------------------+ | |||
| | only-if-cached | Section 5.2.1.7 | | | only-if-cached | 5.2.1.7 | | |||
| +------------------+----------------------------------+ | +------------------+------------------+ | |||
| | private | Section 5.2.2.7 | | | private | 5.2.2.7 | | |||
| +------------------+----------------------------------+ | +------------------+------------------+ | |||
| | proxy-revalidate | Section 5.2.2.8 | | | proxy-revalidate | 5.2.2.8 | | |||
| +------------------+----------------------------------+ | +------------------+------------------+ | |||
| | public | Section 5.2.2.9 | | | public | 5.2.2.9 | | |||
| +------------------+----------------------------------+ | +------------------+------------------+ | |||
| | s-maxage | Section 5.2.2.10 | | | s-maxage | 5.2.2.10 | | |||
| +------------------+----------------------------------+ | +------------------+------------------+ | |||
| Table 2 | Table 2 | |||
| 8.3. Warn Code Registry | 8.3. Warn Code Registry | |||
| IANA has added the following note to the "Hypertext Transfer Protocol | IANA has added the following note to the "Hypertext Transfer Protocol | |||
| (HTTP) Warn Codes" registry at <https://www.iana.org/assignments/ | (HTTP) Warn Codes" registry at <https://www.iana.org/assignments/ | |||
| http-warn-codes> stating that "Warning" has been obsoleted: | http-warn-codes> stating that "Warning" has been obsoleted: | |||
| | The Warning header field (and the warn codes that it uses) has | | The Warning header field (and the warn codes that it uses) has | |||
| | been obsoleted for HTTP per [RFC9111]. | | been obsoleted for HTTP per [RFC9111]. | |||
| 9. References | 9. References | |||
| 9.1. Normative References | 9.1. Normative References | |||
| [HTTP] Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke, | [HTTP] Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke, | |||
| Ed., "HTTP Semantics", RFC 9110, DOI 10.17487/RFC9110, | Ed., "HTTP Semantics", STD 97, RFC 9110, | |||
| April 2022, <https://www.rfc-editor.org/info/rfc9110>. | DOI 10.17487/RFC9110, June 2022, | |||
| <https://www.rfc-editor.org/info/rfc9110>. | ||||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
| DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
| <https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
| [RFC5234] Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax | [RFC5234] Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax | |||
| Specifications: ABNF", STD 68, RFC 5234, | Specifications: ABNF", STD 68, RFC 5234, | |||
| DOI 10.17487/RFC5234, January 2008, | DOI 10.17487/RFC5234, January 2008, | |||
| <https://www.rfc-editor.org/info/rfc5234>. | <https://www.rfc-editor.org/info/rfc5234>. | |||
| skipping to change at line 1740 ¶ | skipping to change at line 1741 ¶ | |||
| 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
| May 2017, <https://www.rfc-editor.org/info/rfc8174>. | May 2017, <https://www.rfc-editor.org/info/rfc8174>. | |||
| 9.2. Informative References | 9.2. Informative References | |||
| [COOKIE] Barth, A., "HTTP State Management Mechanism", RFC 6265, | [COOKIE] Barth, A., "HTTP State Management Mechanism", RFC 6265, | |||
| DOI 10.17487/RFC6265, April 2011, | DOI 10.17487/RFC6265, April 2011, | |||
| <https://www.rfc-editor.org/info/rfc6265>. | <https://www.rfc-editor.org/info/rfc6265>. | |||
| [HTTP/1.1] Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke, | [HTTP/1.1] Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke, | |||
| Ed., "HTTP/1.1", RFC 9112, DOI 10.17487/RFC9112, April | Ed., "HTTP/1.1", STD 99, RFC 9112, DOI 10.17487/RFC9112, | |||
| 2022, <https://www.rfc-editor.org/info/rfc9112>. | June 2022, <https://www.rfc-editor.org/info/rfc9112>. | |||
| [RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., | [RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., | |||
| Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext | Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext | |||
| Transfer Protocol -- HTTP/1.1", RFC 2616, | Transfer Protocol -- HTTP/1.1", RFC 2616, | |||
| DOI 10.17487/RFC2616, June 1999, | DOI 10.17487/RFC2616, June 1999, | |||
| <https://www.rfc-editor.org/info/rfc2616>. | <https://www.rfc-editor.org/info/rfc2616>. | |||
| [RFC5861] Nottingham, M., "HTTP Cache-Control Extensions for Stale | [RFC5861] Nottingham, M., "HTTP Cache-Control Extensions for Stale | |||
| Content", RFC 5861, DOI 10.17487/RFC5861, May 2010, | Content", RFC 5861, DOI 10.17487/RFC5861, May 2010, | |||
| <https://www.rfc-editor.org/info/rfc5861>. | <https://www.rfc-editor.org/info/rfc5861>. | |||
| skipping to change at line 1835 ¶ | skipping to change at line 1836 ¶ | |||
| See Appendix "Acknowledgements" of [HTTP], which applies to this | See Appendix "Acknowledgements" of [HTTP], which applies to this | |||
| document as well. | document as well. | |||
| Index | Index | |||
| A C E F G H M N O P S V W | A C E F G H M N O P S V W | |||
| A | A | |||
| Age header field Section 5.1 | ||||
| age Section 4.2 | age Section 4.2 | |||
| Age header field *_Section 5.1_* | ||||
| C | C | |||
| Cache-Control header field Section 5.2 | ||||
| cache Section 1 | cache Section 1 | |||
| cache key Section 2; Section 2 | cache key Section 2; Section 2 | |||
| Cache-Control header field *_Section 5.2_* | ||||
| collapsed requests Section 4 | collapsed requests Section 4 | |||
| E | E | |||
| Expires header field Section 5.3 | Expires header field *_Section 5.3_* | |||
| explicit expiration time Section 4.2 | explicit expiration time Section 4.2 | |||
| F | F | |||
| Fields | Fields | |||
| Age Section 5.1; Section 5.1 | Age *_Section 5.1_*; *_Section 5.1_* | |||
| Cache-Control Section 5.2 | Cache-Control *_Section 5.2_* | |||
| Expires Section 5.3; Section 5.3 | Expires *_Section 5.3_*; *_Section 5.3_* | |||
| Pragma Section 5.4; Section 5.4 | Pragma *_Section 5.4_*; *_Section 5.4_* | |||
| Warning Section 5.5 | Warning *_Section 5.5_* | |||
| fresh Section 4.2 | fresh Section 4.2 | |||
| freshness lifetime Section 4.2 | freshness lifetime Section 4.2 | |||
| G | G | |||
| Grammar | Grammar | |||
| Age Section 5.1 | Age *_Section 5.1_* | |||
| Cache-Control Section 5.2 | Cache-Control *_Section 5.2_* | |||
| DIGIT Section 1.2 | DIGIT *_Section 1.2_* | |||
| Expires Section 5.3 | Expires *_Section 5.3_* | |||
| cache-directive Section 5.2 | cache-directive *_Section 5.2_* | |||
| delta-seconds Section 1.2.2 | delta-seconds *_Section 1.2.2_* | |||
| H | H | |||
| Header Fields | Header Fields | |||
| Age Section 5.1; Section 5.1 | Age *_Section 5.1_*; *_Section 5.1_* | |||
| Cache-Control Section 5.2 | Cache-Control *_Section 5.2_* | |||
| Expires Section 5.3; Section 5.3 | Expires *_Section 5.3_*; *_Section 5.3_* | |||
| Pragma Section 5.4; Section 5.4 | Pragma *_Section 5.4_*; *_Section 5.4_* | |||
| Warning Section 5.5 | Warning *_Section 5.5_* | |||
| heuristic expiration time Section 4.2 | heuristic expiration time Section 4.2 | |||
| heuristically cacheable Section 4.2.2 | heuristically cacheable Section 4.2.2 | |||
| M | M | |||
| max-age (cache directive) Section 5.2.1.1; Section 5.2.2.1 | max-age (cache directive) *_Section 5.2.1.1_*; | |||
| max-stale (cache directive) Section 5.2.1.2 | *_Section 5.2.2.1_* | |||
| min-fresh (cache directive) Section 5.2.1.3 | max-stale (cache directive) *_Section 5.2.1.2_* | |||
| must-revalidate (cache directive) Section 5.2.2.2 | min-fresh (cache directive) *_Section 5.2.1.3_* | |||
| must-understand (cache directive) Section 5.2.2.3 | must-revalidate (cache directive) *_Section 5.2.2.2_* | |||
| must-understand (cache directive) *_Section 5.2.2.3_* | ||||
| N | N | |||
| no-cache (cache directive) Section 5.2.1.4; Section 5.2.2.4 | no-cache (cache directive) *_Section 5.2.1.4_*; | |||
| no-store (cache directive) Section 5.2.1.5; Section 5.2.2.5 | *_Section 5.2.2.4_* | |||
| no-transform (cache directive) Section 5.2.1.6; | no-store (cache directive) *_Section 5.2.1.5_*; | |||
| Section 5.2.2.6 | *_Section 5.2.2.5_* | |||
| no-transform (cache directive) *_Section 5.2.1.6_*; | ||||
| *_Section 5.2.2.6_* | ||||
| O | O | |||
| only-if-cached (cache directive) Section 5.2.1.7 | only-if-cached (cache directive) *_Section 5.2.1.7_* | |||
| P | P | |||
| Pragma header field Section 5.4 | Pragma header field *_Section 5.4_* | |||
| private (cache directive) Section 5.2.2.7 | private (cache directive) *_Section 5.2.2.7_* | |||
| private cache Section 1 | private cache Section 1 | |||
| proxy-revalidate (cache directive) Section 5.2.2.8 | proxy-revalidate (cache directive) *_Section 5.2.2.8_* | |||
| public (cache directive) Section 5.2.2.9 | public (cache directive) *_Section 5.2.2.9_* | |||
| S | S | |||
| s-maxage (cache directive) Section 5.2.2.10 | s-maxage (cache directive) *_Section 5.2.2.10_* | |||
| shared cache Section 1 | shared cache Section 1 | |||
| stale Section 4.2 | stale Section 4.2 | |||
| V | V | |||
| validator Section 4.3.1 | validator Section 4.3.1 | |||
| W | W | |||
| Warning header field Section 5.5 | Warning header field *_Section 5.5_* | |||
| Authors' Addresses | Authors' Addresses | |||
| Roy T. Fielding (editor) | Roy T. Fielding (editor) | |||
| Adobe | Adobe | |||
| 345 Park Ave | 345 Park Ave | |||
| San Jose, CA 95110 | San Jose, CA 95110 | |||
| United States of America | United States of America | |||
| Email: fielding@gbiv.com | Email: fielding@gbiv.com | |||
| URI: https://roy.gbiv.com/ | URI: https://roy.gbiv.com/ | |||
| End of changes. 24 change blocks. | ||||
| 86 lines changed or deleted | 90 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||