idnits 2.17.1 draft-nottingham-http-stale-if-error-01.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- ** It looks like you're using RFC 3978 boilerplate. You should update this to the boilerplate described in the IETF Trust License Policy document (see https://trustee.ietf.org/license-info), which is required now. -- Found old boilerplate from RFC 3978, Section 5.1 on line 15. -- Found old boilerplate from RFC 3978, Section 5.5, updated by RFC 4748 on line 195. -- Found old boilerplate from RFC 3979, Section 5, paragraph 1 on line 206. -- Found old boilerplate from RFC 3979, Section 5, paragraph 2 on line 213. -- Found old boilerplate from RFC 3979, Section 5, paragraph 3 on line 219. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust Copyright Line does not match the current year -- The document seems to lack a disclaimer for pre-RFC5378 work, but may have content which was first submitted before 10 November 2008. If you have contacted all the original authors and they are all willing to grant the BCP78 rights to the IETF Trust, then this is fine, and you can ignore this comment. If not, you may need to add the pre-RFC5378 disclaimer. (See the Legal Provisions document at https://trustee.ietf.org/license-info for more information.) -- The document date (May 9, 2008) is 5830 days in the past. Is this intentional? Checking references for intended status: Informational ---------------------------------------------------------------------------- ** Obsolete normative reference: RFC 2616 (Obsoleted by RFC 7230, RFC 7231, RFC 7232, RFC 7233, RFC 7234, RFC 7235) Summary: 2 errors (**), 0 flaws (~~), 1 warning (==), 7 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Network Working Group M. Nottingham 3 Internet-Draft Yahoo! Inc. 4 Intended status: Informational May 9, 2008 5 Expires: November 10, 2008 7 The stale-if-error HTTP Cache-Control Extension 8 draft-nottingham-http-stale-if-error-01 10 Status of this Memo 12 By submitting this Internet-Draft, each author represents that any 13 applicable patent or other IPR claims of which he or she is aware 14 have been or will be disclosed, and any of which he or she becomes 15 aware will be disclosed, in accordance with Section 6 of BCP 79. 17 Internet-Drafts are working documents of the Internet Engineering 18 Task Force (IETF), its areas, and its working groups. Note that 19 other groups may also distribute working documents as Internet- 20 Drafts. 22 Internet-Drafts are draft documents valid for a maximum of six months 23 and may be updated, replaced, or obsoleted by other documents at any 24 time. It is inappropriate to use Internet-Drafts as reference 25 material or to cite them other than as "work in progress." 27 The list of current Internet-Drafts can be accessed at 28 http://www.ietf.org/ietf/1id-abstracts.txt. 30 The list of Internet-Draft Shadow Directories can be accessed at 31 http://www.ietf.org/shadow.html. 33 This Internet-Draft will expire on November 10, 2008. 35 Abstract 37 The stale-if-error HTTP Cache-Control extension improves availability 38 of some kinds of cached content by allowing servers and clients to 39 instruct caches to use stale responses when certain error conditions 40 are encountered. 42 Table of Contents 44 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 45 2. Notational Conventions . . . . . . . . . . . . . . . . . . . . 3 46 3. The stale-if-error Cache-Control Extension . . . . . . . . . . 3 47 4. Response stale-if-error Example . . . . . . . . . . . . . . . . 4 48 5. Security Considerations . . . . . . . . . . . . . . . . . . . . 5 49 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . . 5 50 7. Normative References . . . . . . . . . . . . . . . . . . . . . 5 51 Appendix A. Acknowledgements . . . . . . . . . . . . . . . . . . . 5 52 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 5 53 Intellectual Property and Copyright Statements . . . . . . . . . . 6 55 1. Introduction 57 HTTP [RFC2616] requires that caches "respond to a request with the 58 most up-to-date response held... that is appropriate to the request," 59 although "in carefully controlled circumstances" a stale response is 60 allowed to be returned. 62 Those circumstances are not well-defined. Often, it is useful to 63 return a stale response when an error -- e.g., a 500 Internal Server 64 Error, a network segment, or DNS failure -- is encountered, but 65 caches are understandably reluctant to act without explicit 66 instructions about the appropriate behaviour. 68 The stale-if-error HTTP Cache-Control extension addresses this by 69 allowing origin servers as well as clients to instruct caches to use 70 a stale response under certain conditions, rather than returning a 71 "hard" error, thus improving availability. 73 2. Notational Conventions 75 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 76 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 77 document are to be interpreted as described in RFC 2119 [RFC2119]. 79 This specification uses the augmented Backus-Naur Form of RFC2616 80 [RFC2616], and includes the delta-seconds rule from that 81 specification. 83 3. The stale-if-error Cache-Control Extension 85 The stale-if-error Cache-Control extension indicates that when an 86 error is encountered, a cached stale response MAY be used to satisfy 87 the request, regardless of other freshness information. 89 stale-if-error = "stale-if-error" "=" delta-seconds 91 When used as a request Cache-Control extension, its scope of 92 application is the request it appears in; when used as a response 93 Cache-Control extension, its scope is any request applicable to the 94 cached response it occurs in. 96 Its value indicates the upper limit to staleness; when the cached 97 response is more stale than the indicated amount, the cached response 98 MUST NOT be used to satisfy the request, absent other information. 100 In this context, an error is any situation which would result in a 101 500, 502, 503 or 504 HTTP response status code being returned. 103 Note that this directive only affects the freshness of a response in 104 an implementation that recognises it; stale cached responses that are 105 used SHOULD still be visibly stale when sent. 107 4. Response stale-if-error Example 109 A response containing: 111 HTTP/1.1 200 OK 112 Cache-Control: max-age=600, stale-if-error=1200 113 Content-Type: text/plain 115 success 117 indicates that it is fresh for 600 seconds, and that it may be used 118 if an error is encountered after becoming stale for an additional 119 1200 seconds. 121 Thus, if the cache attempts to validate 900 seconds afterwards and 122 encounters: 124 HTTP/1.1 500 Internal Server Error 125 Content-Type: text/plain 127 failure 129 the successful response can be returned instead: 131 HTTP/1.1 200 OK 132 Cache-Control: max-age=600, stale-if-error=1200 133 Age: 900 134 Content-Type: text/plain 136 succcess 138 After the age is greater than 1800 seconds (i.e., it has been stale 139 for 1200 seconds), the cache must write the error message through. 141 HTTP/1.1 500 Internal Server Error 142 Content-Type: text/plain 144 failure 146 5. Security Considerations 148 This document provides origin servers and clients a mechanism for 149 dictating that stale content should be served from caches under 150 certain circumstances, and does not pose additional security 151 considerations over those of RFC2616, which also allows stale content 152 to be served. 154 6. IANA Considerations 156 This document has no actions for IANA. 158 7. Normative References 160 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 161 Requirement Levels", BCP 14, RFC 2119, March 1997. 163 [RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., 164 Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext 165 Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999. 167 Appendix A. Acknowledgements 169 Thanks to John Nienart, Henrik Nordstrom, Evan Torrie, and Chris 170 Westin for their suggestions. The author takes all responsibility 171 for errors and omissions. 173 Author's Address 175 Mark Nottingham 176 Yahoo! Inc. 178 Email: mnot@yahoo-inc.com 179 URI: http://www.mnot.net/ 181 Full Copyright Statement 183 Copyright (C) The IETF Trust (2008). 185 This document is subject to the rights, licenses and restrictions 186 contained in BCP 78, and except as set forth therein, the authors 187 retain all their rights. 189 This document and the information contained herein are provided on an 190 "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS 191 OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND 192 THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS 193 OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF 194 THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED 195 WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. 197 Intellectual Property 199 The IETF takes no position regarding the validity or scope of any 200 Intellectual Property Rights or other rights that might be claimed to 201 pertain to the implementation or use of the technology described in 202 this document or the extent to which any license under such rights 203 might or might not be available; nor does it represent that it has 204 made any independent effort to identify any such rights. Information 205 on the procedures with respect to rights in RFC documents can be 206 found in BCP 78 and BCP 79. 208 Copies of IPR disclosures made to the IETF Secretariat and any 209 assurances of licenses to be made available, or the result of an 210 attempt made to obtain a general license or permission for the use of 211 such proprietary rights by implementers or users of this 212 specification can be obtained from the IETF on-line IPR repository at 213 http://www.ietf.org/ipr. 215 The IETF invites any interested party to bring to its attention any 216 copyrights, patents or patent applications, or other proprietary 217 rights that may cover technology that may be required to implement 218 this standard. Please address the information to the IETF at 219 ietf-ipr@ietf.org.