| draft-ietf-httpbis-cache-01.txt | draft-ietf-httpbis-cache-02.txt | |||
|---|---|---|---|---|
| HTTP Working Group R. Fielding, Ed. | HTTP Working Group R. Fielding, Ed. | |||
| Internet-Draft Adobe | Internet-Draft Adobe | |||
| Obsoletes: 7234 (if approved) M. Nottingham, Ed. | Obsoletes: 7234 (if approved) M. Nottingham, Ed. | |||
| Intended status: Standards Track Fastly | Intended status: Standards Track Fastly | |||
| Expires: December 2, 2018 J. Reschke, Ed. | Expires: January 3, 2019 J. Reschke, Ed. | |||
| greenbytes | greenbytes | |||
| May 31, 2018 | July 2, 2018 | |||
| HTTP Caching | HTTP Caching | |||
| draft-ietf-httpbis-cache-01 | draft-ietf-httpbis-cache-02 | |||
| 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. | |||
| This document obsoletes RFC 7234. | This document obsoletes RFC 7234. | |||
| skipping to change at page 1, line 36 ¶ | skipping to change at page 1, line 36 ¶ | |||
| This note is to be removed before publishing as an RFC. | This note is to be removed before publishing as an RFC. | |||
| Discussion of this draft takes place on the HTTP working group | Discussion of this draft takes place on the HTTP working group | |||
| mailing list (ietf-http-wg@w3.org), which is archived at | mailing list (ietf-http-wg@w3.org), which is archived at | |||
| <https://lists.w3.org/Archives/Public/ietf-http-wg/>. | <https://lists.w3.org/Archives/Public/ietf-http-wg/>. | |||
| Working Group information can be found at <https://httpwg.org/>; | Working Group information can be found at <https://httpwg.org/>; | |||
| source code and issues list for this draft can be found at | source code and issues list for this draft can be found at | |||
| <https://github.com/httpwg/http-core>. | <https://github.com/httpwg/http-core>. | |||
| The changes in this draft are summarized in Appendix C.2. | The changes in this draft are summarized in Appendix C.3. | |||
| Status of This Memo | Status of This Memo | |||
| This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
| provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at https://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on December 2, 2018. | This Internet-Draft will expire on January 3, 2019. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2018 IETF Trust and the persons identified as the | Copyright (c) 2018 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | document authors. All rights reserved. | |||
| This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Provisions Relating to IETF Documents | Provisions Relating to IETF Documents | |||
| (https://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
| publication of this document. Please review these documents | publication of this document. Please review these documents | |||
| skipping to change at page 3, line 45 ¶ | skipping to change at page 3, line 45 ¶ | |||
| 8.2. Cache Directive Registration . . . . . . . . . . . . . . 36 | 8.2. Cache Directive Registration . . . . . . . . . . . . . . 36 | |||
| 8.3. Warn Code Registration . . . . . . . . . . . . . . . . . 36 | 8.3. Warn Code Registration . . . . . . . . . . . . . . . . . 36 | |||
| 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 36 | 9. References . . . . . . . . . . . . . . . . . . . . . . . . . 36 | |||
| 9.1. Normative References . . . . . . . . . . . . . . . . . . 36 | 9.1. Normative References . . . . . . . . . . . . . . . . . . 36 | |||
| 9.2. Informative References . . . . . . . . . . . . . . . . . 37 | 9.2. Informative References . . . . . . . . . . . . . . . . . 37 | |||
| Appendix A. Collected ABNF . . . . . . . . . . . . . . . . . . . 38 | Appendix A. Collected ABNF . . . . . . . . . . . . . . . . . . . 38 | |||
| Appendix B. Changes from RFC 7234 . . . . . . . . . . . . . . . 39 | Appendix B. Changes from RFC 7234 . . . . . . . . . . . . . . . 39 | |||
| Appendix C. Change Log . . . . . . . . . . . . . . . . . . . . . 39 | Appendix C. Change Log . . . . . . . . . . . . . . . . . . . . . 39 | |||
| C.1. Between RFC7234 and draft 00 . . . . . . . . . . . . . . 39 | C.1. Between RFC7234 and draft 00 . . . . . . . . . . . . . . 39 | |||
| C.2. Since draft-ietf-httpbis-cache-00 . . . . . . . . . . . . 39 | C.2. Since draft-ietf-httpbis-cache-00 . . . . . . . . . . . . 39 | |||
| Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 | C.3. Since draft-ietf-httpbis-cache-01 . . . . . . . . . . . . 39 | |||
| Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 | ||||
| Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 42 | Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 42 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 42 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 42 | |||
| 1. Introduction | 1. Introduction | |||
| The Hypertext Transfer Protocol (HTTP) is a stateless application- | The Hypertext Transfer Protocol (HTTP) is a stateless application- | |||
| level request/response protocol that uses extensible semantics and | level request/response protocol that uses extensible semantics and | |||
| self-descriptive messages for flexible interaction with network-based | self-descriptive messages for flexible interaction with network-based | |||
| hypertext information systems. HTTP is defined by a series of | hypertext information systems. HTTP is defined by a series of | |||
| documents that collectively form the HTTP/1.1 specification: | documents that collectively form the HTTP/1.1 specification: | |||
| skipping to change at page 29, line 46 ¶ | skipping to change at page 29, line 46 ¶ | |||
| and is now maintained at <https://www.iana.org/assignments/http- | and is now maintained at <https://www.iana.org/assignments/http- | |||
| cache-directives>. | cache-directives>. | |||
| A registration MUST include the following fields: | A registration MUST include the following fields: | |||
| o Cache Directive Name | o Cache Directive Name | |||
| o Pointer to specification text | o Pointer to specification text | |||
| Values to be added to this namespace require IETF Review (see | Values to be added to this namespace require IETF Review (see | |||
| [RFC5226], Section 4.1). | [RFC8126], Section 4.8). | |||
| 5.3. Expires | 5.3. Expires | |||
| The "Expires" header field gives the date/time after which the | The "Expires" header field gives the date/time after which the | |||
| response is considered stale. See Section 4.2 for further discussion | response is considered stale. See Section 4.2 for further discussion | |||
| of the freshness model. | of the freshness model. | |||
| The presence of an Expires field does not imply that the original | The presence of an Expires field does not imply that the original | |||
| resource will change or cease to exist at, before, or after that | resource will change or cease to exist at, before, or after that | |||
| time. | time. | |||
| skipping to change at page 31, line 16 ¶ | skipping to change at page 31, line 16 ¶ | |||
| pragma-directive = "no-cache" / extension-pragma | pragma-directive = "no-cache" / extension-pragma | |||
| extension-pragma = token [ "=" ( token / quoted-string ) ] | extension-pragma = token [ "=" ( token / quoted-string ) ] | |||
| When the Cache-Control header field is not present in a request, | When the Cache-Control header field is not present in a request, | |||
| caches MUST consider the no-cache request pragma-directive as having | caches MUST consider the no-cache request pragma-directive as having | |||
| the same effect as if "Cache-Control: no-cache" were present (see | the same effect as if "Cache-Control: no-cache" were present (see | |||
| Section 5.2.1). | Section 5.2.1). | |||
| When sending a no-cache request, a client ought to include both the | When sending a no-cache request, a client ought to include both the | |||
| pragma and cache-control directives, unless Cache-Control: no-cache | pragma and cache-control directives, unless Cache-Control: no-cache | |||
| is purposefully omitted to target other Cache-Control response | is purposefully omitted to target other Cache-Control request | |||
| directives at HTTP/1.1 caches. For example: | directives at HTTP/1.1 caches. For example: | |||
| GET / HTTP/1.1 | GET / HTTP/1.1 | |||
| Host: www.example.com | Host: www.example.com | |||
| Cache-Control: max-age=30 | Cache-Control: max-age=30 | |||
| Pragma: no-cache | Pragma: no-cache | |||
| will constrain HTTP/1.1 caches to serve a response no older than 30 | will constrain HTTP/1.1 caches to serve a response no older than 30 | |||
| seconds, while precluding implementations that do not understand | seconds, while precluding implementations that do not understand | |||
| Cache-Control from serving a cached response. | Cache-Control from serving a cached response. | |||
| skipping to change at page 34, line 46 ¶ | skipping to change at page 34, line 46 ¶ | |||
| A registration MUST include the following fields: | A registration MUST include the following fields: | |||
| o Warn Code (3 digits) | o Warn Code (3 digits) | |||
| o Short Description | o Short Description | |||
| o Pointer to specification text | o Pointer to specification text | |||
| Values to be added to this namespace require IETF Review (see | Values to be added to this namespace require IETF Review (see | |||
| [RFC5226], Section 4.1). | [RFC8126], Section 4.8). | |||
| 6. History Lists | 6. History Lists | |||
| User agents often have history mechanisms, such as "Back" buttons and | User agents often have history mechanisms, such as "Back" buttons and | |||
| history lists, that can be used to redisplay a representation | history lists, that can be used to redisplay a representation | |||
| retrieved earlier in a session. | retrieved earlier in a session. | |||
| The freshness model (Section 4.2) does not necessarily apply to | The freshness model (Section 4.2) does not necessarily apply to | |||
| history mechanisms. That is, a history mechanism can display a | history mechanisms. That is, a history mechanism can display a | |||
| previous representation even if it has expired. | previous representation even if it has expired. | |||
| skipping to change at page 36, line 7 ¶ | skipping to change at page 36, line 7 ¶ | |||
| quickly, thanks to the cache. | quickly, thanks to the cache. | |||
| Note that the Set-Cookie response header field [RFC6265] does not | Note that the Set-Cookie response header field [RFC6265] does not | |||
| inhibit caching; a cacheable response with a Set-Cookie header field | inhibit caching; a cacheable response with a Set-Cookie header field | |||
| can be (and often is) used to satisfy subsequent requests to caches. | can be (and often is) used to satisfy subsequent requests to caches. | |||
| Servers who wish to control caching of these responses are encouraged | Servers who wish to control caching of these responses are encouraged | |||
| to emit appropriate Cache-Control response header fields. | to emit appropriate Cache-Control response header fields. | |||
| 8. IANA Considerations | 8. IANA Considerations | |||
| This section is to be removed before publishing as an RFC. | ||||
| 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. Header Field Registration | 8.1. Header Field Registration | |||
| Please update the "Message Headers" registry of "Permanent Message | Please update the "Message Headers" registry of "Permanent Message | |||
| Header Field Names" at <https://www.iana.org/assignments/message- | Header Field Names" at <https://www.iana.org/assignments/message- | |||
| headers> with the header field names listed in the table of | headers> with the header field names listed in the table of | |||
| Section 5. | Section 5. | |||
| skipping to change at page 36, line 39 ¶ | skipping to change at page 36, line 37 ¶ | |||
| registry at <https://www.iana.org/assignments/http-warn-codes> with | registry at <https://www.iana.org/assignments/http-warn-codes> with | |||
| the registration procedure of Section 5.5.8 and the warn code values | the registration procedure of Section 5.5.8 and the warn code values | |||
| summarized in the table of Section 5.5. | summarized in the table of Section 5.5. | |||
| 9. References | 9. References | |||
| 9.1. Normative References | 9.1. Normative References | |||
| [Messaging] | [Messaging] | |||
| Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke, | Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke, | |||
| Ed., "HTTP/1.1 Messaging", draft-ietf-httpbis-messaging-01 | Ed., "HTTP/1.1 Messaging", draft-ietf-httpbis-messaging-02 | |||
| (work in progress), May 2018. | (work in progress), July 2018. | |||
| [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>. | |||
| [RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform | [RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform | |||
| Resource Identifier (URI): Generic Syntax", STD 66, | Resource Identifier (URI): Generic Syntax", STD 66, | |||
| RFC 3986, DOI 10.17487/RFC3986, January 2005, | RFC 3986, DOI 10.17487/RFC3986, January 2005, | |||
| <https://www.rfc-editor.org/info/rfc3986>. | <https://www.rfc-editor.org/info/rfc3986>. | |||
| [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>. | |||
| [Semantics] | [Semantics] | |||
| Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke, | Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke, | |||
| Ed., "HTTP Semantics", draft-ietf-httpbis-semantics-01 | Ed., "HTTP Semantics", draft-ietf-httpbis-semantics-02 | |||
| (work in progress), May 2018. | (work in progress), July 2018. | |||
| [USASCII] American National Standards Institute, "Coded Character | [USASCII] American National Standards Institute, "Coded Character | |||
| Set -- 7-bit American Standard Code for Information | Set -- 7-bit American Standard Code for Information | |||
| Interchange", ANSI X3.4, 1986. | Interchange", ANSI X3.4, 1986. | |||
| 9.2. Informative References | 9.2. Informative References | |||
| [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>. | |||
| [RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an | ||||
| IANA Considerations Section in RFCs", BCP 26, RFC 5226, | ||||
| DOI 10.17487/RFC5226, May 2008, | ||||
| <https://www.rfc-editor.org/info/rfc5226>. | ||||
| [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, April 2010, | Content", RFC 5861, DOI 10.17487/RFC5861, April 2010, | |||
| <https://www.rfc-editor.org/info/rfc5861>. | <https://www.rfc-editor.org/info/rfc5861>. | |||
| [RFC5905] Mills, D., Martin, J., Ed., Burbank, J., and W. Kasch, | [RFC5905] Mills, D., Martin, J., Ed., Burbank, J., and W. Kasch, | |||
| "Network Time Protocol Version 4: Protocol and Algorithms | "Network Time Protocol Version 4: Protocol and Algorithms | |||
| Specification", RFC 5905, DOI 10.17487/RFC5905, June 2010, | Specification", RFC 5905, DOI 10.17487/RFC5905, June 2010, | |||
| <https://www.rfc-editor.org/info/rfc5905>. | <https://www.rfc-editor.org/info/rfc5905>. | |||
| [RFC6265] Barth, A., "HTTP State Management Mechanism", RFC 6265, | [RFC6265] 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>. | |||
| [RFC7234] Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke, | [RFC7234] Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke, | |||
| Ed., "Hypertext Transfer Protocol (HTTP): Caching", | Ed., "Hypertext Transfer Protocol (HTTP): Caching", | |||
| RFC 7234, DOI 10.17487/RFC7234, June 2014, | RFC 7234, DOI 10.17487/RFC7234, June 2014, | |||
| <https://www.rfc-editor.org/info/rfc7234>. | <https://www.rfc-editor.org/info/rfc7234>. | |||
| [RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for | ||||
| Writing an IANA Considerations Section in RFCs", BCP 26, | ||||
| RFC 8126, DOI 10.17487/RFC8126, June 2017, | ||||
| <https://www.rfc-editor.org/info/rfc8126>. | ||||
| Appendix A. Collected ABNF | Appendix A. Collected ABNF | |||
| In the collected ABNF below, list rules are expanded as per | In the collected ABNF below, list rules are expanded as per | |||
| Section 11 of [Semantics]. | Section 11 of [Semantics]. | |||
| Age = delta-seconds | Age = delta-seconds | |||
| Cache-Control = *( "," OWS ) cache-directive *( OWS "," [ OWS | Cache-Control = *( "," OWS ) cache-directive *( OWS "," [ OWS | |||
| cache-directive ] ) | cache-directive ] ) | |||
| skipping to change at page 39, line 43 ¶ | skipping to change at page 39, line 43 ¶ | |||
| C.2. Since draft-ietf-httpbis-cache-00 | C.2. Since draft-ietf-httpbis-cache-00 | |||
| The changes are purely editorial: | The changes are purely editorial: | |||
| o Moved all extensibility tips, registration procedures, and | o Moved all extensibility tips, registration procedures, and | |||
| registry tables from the IANA considerations to normative | registry tables from the IANA considerations to normative | |||
| sections, reducing the IANA considerations to just instructions | sections, reducing the IANA considerations to just instructions | |||
| that will be removed prior to publication as an RFC. | that will be removed prior to publication as an RFC. | |||
| C.3. Since draft-ietf-httpbis-cache-01 | ||||
| o Cite RFC 8126 instead of RFC 5226 (<https://github.com/httpwg/ | ||||
| http-core/issues/75>) | ||||
| o In Section 5.4, misleading statement about the relation between | ||||
| Pragma and Cache-Control (<https://github.com/httpwg/http-core/ | ||||
| issues/92>, <https://www.rfc-editor.org/errata/eid4674>) | ||||
| Index | Index | |||
| 1 | 1 | |||
| 110 (warn-code) 33 | 110 (warn-code) 33 | |||
| 111 (warn-code) 33 | 111 (warn-code) 33 | |||
| 112 (warn-code) 33 | 112 (warn-code) 33 | |||
| 113 (warn-code) 34 | 113 (warn-code) 34 | |||
| 199 (warn-code) 34 | 199 (warn-code) 34 | |||
| 2 | 2 | |||
| End of changes. 15 change blocks. | ||||
| 20 lines changed or deleted | 28 lines changed or added | |||
This html diff was produced by rfcdiff 1.45. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||