idnits 2.17.1 draft-nottingham-http-stale-while-revalidate-00.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 179. -- Found old boilerplate from RFC 3979, Section 5, paragraph 1 on line 190. -- Found old boilerplate from RFC 3979, Section 5, paragraph 2 on line 197. -- Found old boilerplate from RFC 3979, Section 5, paragraph 3 on line 203. 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 : ---------------------------------------------------------------------------- ** The document seems to lack an IANA Considerations section. (See Section 2.2 of https://www.ietf.org/id-info/checklist for how to handle the case when there are no actions for IANA.) Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust Copyright Line does not match the current year == The document seems to lack the recommended RFC 2119 boilerplate, even if it appears to use RFC 2119 keywords -- however, there's a paragraph with a matching beginning. Boilerplate error? (The document does seem to have the reference to RFC 2119 which the ID-Checklist requires). -- 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 (February 19, 2007) is 6275 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: 3 errors (**), 0 flaws (~~), 2 warnings (==), 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 February 19, 2007 5 Expires: August 23, 2007 7 The stale-while-revalidate HTTP Cache-Control Extension 8 draft-nottingham-http-stale-while-revalidate-00 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 August 23, 2007. 35 Copyright Notice 37 Copyright (C) The IETF Trust (2007). 39 Abstract 41 The stale-while-revalidate HTTP response Cache-Control extension 42 allows servers to instruct shared caches to serve stale responses 43 while validating them, to avoid latency in some situations. 45 Table of Contents 47 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 48 2. Notational Conventions . . . . . . . . . . . . . . . . . . . . 3 49 3. The stale-while-revalidate Cache-Control Extension . . . . . . 3 50 4. Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 51 5. Security Considerations . . . . . . . . . . . . . . . . . . . . 4 52 6. Normative References . . . . . . . . . . . . . . . . . . . . . 4 53 Appendix A. Acknowledgements . . . . . . . . . . . . . . . . . . . 5 54 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 5 55 Intellectual Property and Copyright Statements . . . . . . . . . . 6 57 1. Introduction 59 The potential for latency (due to the network as well as server 60 processing) introduced by cache validation in HTTP [RFC2616] is often 61 undesirable; while subsequent requests can be served from the cache 62 quickly, the request that triggers validation sees degraded service. 64 In some situations, it may be useful to avoid this latency, at the 65 cost of serving slightly stale responses. the stale-while-revalidate 66 HTTP response Cache-Control extension allows origin servers to 67 instruct caches to do this. 69 2. Notational Conventions 71 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 72 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 73 document are to be interpreted as described in BCP 14 [RFC2119], as 74 scoped to those conformance targets. 76 This specification uses the augmented Backus-Naur Form of RFC2616 77 [RFC2616], and includes the delta-seconds rule from that 78 specification. 80 3. The stale-while-revalidate Cache-Control Extension 82 When present in an HTTP response, the stale-while-revalidate Cache- 83 Control extension indicates that shared caches MAY serve the response 84 it appears in after it becomes stale, up to the indicated number of 85 seconds. 87 stale-while-revalidate = "stale-while-revalidate" "=" delta-seconds 89 If a cached response is served stale due to the presence of this 90 extension, the cache SHOULD attempt to revalidate it while still 91 serving stale responses (i.e., without blocking). 93 Note that 'stale' implies that the response will have a non-zero Age 94 header and a warning header, as per HTTP's requirements. 96 If delta-seconds passes without the cached entity being revalidated, 97 it MUST NOT continue to be served stale, absent other information. 99 Private caches MUST ignore this Cache-Control extension. 101 4. Example 103 A response containing: 105 Cache-Control: max-age=600, stale-while-revalidate=30 107 indicates that it is fresh for 600 seconds, and it may continue to be 108 served stale for up to 30 seconds while an asynchronous validation is 109 attempted. If validation is inconclusive, or if there is not traffic 110 that triggers it, after 30 seconds the stale-while-revalidate 111 function will cease to operate, and the cached response will be 112 "truly" stale (i.e., the next request will block and be handled 113 normally). 115 Generally, servers will want to set the combination of max-age and 116 stale-while-revalidate to the longest total potential freshness 117 lifetime that they can tolerate. For example, with both set to 600, 118 the server must be able to tolerate the response being served from 119 cache for up to 20 minutes. 121 Since asynchronous validation will only happen if a request occurs 122 after the response has become stale, but before the end of the stale- 123 while-revalidate window, the size of that window and the likelihood 124 of a request during it determines how likely it is that all requests 125 will be served without delay. if the window is too small, or traffic 126 too sparse, some requests will fall outside of it, and block until 127 the server can validate the cached response. 129 5. Security Considerations 131 This mechanism provides origin servers with a mechanism for dictating 132 that stale content should be served from caches under certain 133 circumstances, with the expectation that the cached response will be 134 revalidated in the background. It is suggested that such validation 135 be predicated upon an incoming request, to avoid the possibility of 136 an amplification attack (as can be seen in some other pre-fetching 137 and automatic refresh mechanisms). Cache implementers should keep 138 this in mind when deciding the circumstances under which they will 139 generate a request that is not directly initiated by a user or 140 client. 142 6. Normative References 144 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 145 Requirement Levels", BCP 14, RFC 2119, March 1997. 147 [RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., 148 Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext 149 Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999. 151 Appendix A. Acknowledgements 153 Thanks to John Nienart, Henrik Nordstrom, Evan Torrie, and Chris 154 Westin for their suggestions. The author takes all responsibility 155 for errors and omissions. 157 Author's Address 159 Mark Nottingham 160 Yahoo! Inc. 162 Email: mnot@yahoo-inc.com 163 URI: http://www.mnot.net/ 165 Full Copyright Statement 167 Copyright (C) The IETF Trust (2007). 169 This document is subject to the rights, licenses and restrictions 170 contained in BCP 78, and except as set forth therein, the authors 171 retain all their rights. 173 This document and the information contained herein are provided on an 174 "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS 175 OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND 176 THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS 177 OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF 178 THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED 179 WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. 181 Intellectual Property 183 The IETF takes no position regarding the validity or scope of any 184 Intellectual Property Rights or other rights that might be claimed to 185 pertain to the implementation or use of the technology described in 186 this document or the extent to which any license under such rights 187 might or might not be available; nor does it represent that it has 188 made any independent effort to identify any such rights. Information 189 on the procedures with respect to rights in RFC documents can be 190 found in BCP 78 and BCP 79. 192 Copies of IPR disclosures made to the IETF Secretariat and any 193 assurances of licenses to be made available, or the result of an 194 attempt made to obtain a general license or permission for the use of 195 such proprietary rights by implementers or users of this 196 specification can be obtained from the IETF on-line IPR repository at 197 http://www.ietf.org/ipr. 199 The IETF invites any interested party to bring to its attention any 200 copyrights, patents or patent applications, or other proprietary 201 rights that may cover technology that may be required to implement 202 this standard. Please address the information to the IETF at 203 ietf-ipr@ietf.org. 205 Acknowledgment 207 Funding for the RFC Editor function is provided by the IETF 208 Administrative Support Activity (IASA).