draft-ietf-httpbis-p6-cache-19.txt   draft-ietf-httpbis-p6-cache-latest.txt 
HTTPbis Working Group R. Fielding, Ed. HTTPbis Working Group R. Fielding, Ed.
Internet-Draft Adobe Internet-Draft Adobe
Obsoletes: 2616 (if approved) Y. Lafon, Ed. Obsoletes: 2616 (if approved) Y. Lafon, Ed.
Intended status: Standards Track W3C Intended status: Standards Track W3C
Expires: September 13, 2012 M. Nottingham, Ed. Expires: November 20, 2012 M. Nottingham, Ed.
Rackspace Rackspace
J. Reschke, Ed. J. Reschke, Ed.
greenbytes greenbytes
March 12, 2012 May 19, 2012
HTTP/1.1, part 6: Caching HTTP/1.1, part 6: Caching
draft-ietf-httpbis-p6-cache-19 draft-ietf-httpbis-p6-cache-latest
Abstract Abstract
The Hypertext Transfer Protocol (HTTP) is an application-level The Hypertext Transfer Protocol (HTTP) is an application-level
protocol for distributed, collaborative, hypertext information protocol for distributed, collaborative, hypertext information
systems. HTTP has been in use by the World Wide Web global systems. HTTP has been in use by the World Wide Web global
information initiative since 1990. This document is Part 6 of the information initiative since 1990. This document is Part 6 of the
seven-part specification that defines the protocol referred to as seven-part specification that defines the protocol referred to as
"HTTP/1.1" and, taken together, obsoletes RFC 2616. "HTTP/1.1" and, taken together, obsoletes RFC 2616.
skipping to change at page 1, line 40 skipping to change at page 1, line 40
Discussion of this draft should take place on the HTTPBIS working Discussion of this draft should take place on the HTTPBIS working
group mailing list (ietf-http-wg@w3.org), which is archived at group mailing list (ietf-http-wg@w3.org), which is archived at
<http://lists.w3.org/Archives/Public/ietf-http-wg/>. <http://lists.w3.org/Archives/Public/ietf-http-wg/>.
The current issues list is at The current issues list is at
<http://tools.ietf.org/wg/httpbis/trac/report/3> and related <http://tools.ietf.org/wg/httpbis/trac/report/3> and related
documents (including fancy diffs) can be found at documents (including fancy diffs) can be found at
<http://tools.ietf.org/wg/httpbis/>. <http://tools.ietf.org/wg/httpbis/>.
The changes in this draft are summarized in Appendix C.20. The changes in this draft are summarized in Appendix C.1.
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 http://datatracker.ietf.org/drafts/current/. Drafts is at http://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 September 13, 2012. This Internet-Draft will expire on November 20, 2012.
Copyright Notice Copyright Notice
Copyright (c) 2012 IETF Trust and the persons identified as the Copyright (c) 2012 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
(http://trustee.ietf.org/license-info) in effect on the date of (http://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 2, line 42 skipping to change at page 2, line 42
modifications of such material outside the IETF Standards Process. modifications of such material outside the IETF Standards Process.
Without obtaining an adequate license from the person(s) controlling Without obtaining an adequate license from the person(s) controlling
the copyright in such materials, this document may not be modified the copyright in such materials, this document may not be modified
outside the IETF Standards Process, and derivative works of it may outside the IETF Standards Process, and derivative works of it may
not be created outside the IETF Standards Process, except to format not be created outside the IETF Standards Process, except to format
it for publication as an RFC or to translate it into languages other it for publication as an RFC or to translate it into languages other
than English. than English.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 5 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.1. Purpose . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.1. Purpose . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2. Terminology . . . . . . . . . . . . . . . . . . . . . . . 5 1.2. Terminology . . . . . . . . . . . . . . . . . . . . . . . 4
1.3. Conformance and Error Handling . . . . . . . . . . . . . . 7 1.3. Conformance and Error Handling . . . . . . . . . . . . . . 6
1.4. Syntax Notation . . . . . . . . . . . . . . . . . . . . . 7 1.4. Syntax Notation . . . . . . . . . . . . . . . . . . . . . 6
1.4.1. Core Rules . . . . . . . . . . . . . . . . . . . . . . 8 1.4.1. Core Rules . . . . . . . . . . . . . . . . . . . . . . 7
1.4.2. ABNF Rules defined in other Parts of the 1.4.2. ABNF Rules defined in other Parts of the
Specification . . . . . . . . . . . . . . . . . . . . 8 Specification . . . . . . . . . . . . . . . . . . . . 7
1.5. Delta Seconds . . . . . . . . . . . . . . . . . . . . . . 8 1.5. Delta Seconds . . . . . . . . . . . . . . . . . . . . . . 7
2. Cache Operation . . . . . . . . . . . . . . . . . . . . . . . 8 2. Cache Operation . . . . . . . . . . . . . . . . . . . . . . . 7
2.1. Response Cacheability . . . . . . . . . . . . . . . . . . 9 2.1. Response Cacheability . . . . . . . . . . . . . . . . . . 8
2.2. Constructing Responses from Caches . . . . . . . . . . . . 10 2.2. Constructing Responses from Caches . . . . . . . . . . . . 9
2.3. Freshness Model . . . . . . . . . . . . . . . . . . . . . 12 2.3. Freshness Model . . . . . . . . . . . . . . . . . . . . . 11
2.3.1. Calculating Freshness Lifetime . . . . . . . . . . . . 13 2.3.1. Calculating Freshness Lifetime . . . . . . . . . . . . 12
2.3.2. Calculating Age . . . . . . . . . . . . . . . . . . . 14 2.3.2. Calculating Age . . . . . . . . . . . . . . . . . . . 13
2.3.3. Serving Stale Responses . . . . . . . . . . . . . . . 16 2.3.3. Serving Stale Responses . . . . . . . . . . . . . . . 15
2.4. Validation Model . . . . . . . . . . . . . . . . . . . . . 16 2.4. Validation Model . . . . . . . . . . . . . . . . . . . . . 15
2.4.1. Freshening Responses with 304 Not Modified . . . . . . 17 2.4.1. Freshening Responses with 304 Not Modified . . . . . . 16
2.5. Updating Caches with HEAD Responses . . . . . . . . . . . 18 2.5. Updating Caches with HEAD Responses . . . . . . . . . . . 17
2.6. Request Methods that Invalidate . . . . . . . . . . . . . 18 2.6. Request Methods that Invalidate . . . . . . . . . . . . . 17
2.7. Shared Caching of Authenticated Responses . . . . . . . . 19 2.7. Shared Caching of Authenticated Responses . . . . . . . . 18
2.8. Caching Negotiated Responses . . . . . . . . . . . . . . . 19 2.8. Caching Negotiated Responses . . . . . . . . . . . . . . . 18
2.9. Combining Partial Content . . . . . . . . . . . . . . . . 20 2.9. Combining Partial Content . . . . . . . . . . . . . . . . 19
3. Header Field Definitions . . . . . . . . . . . . . . . . . . . 21 3. Header Field Definitions . . . . . . . . . . . . . . . . . . . 20
3.1. Age . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 3.1. Age . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.2. Cache-Control . . . . . . . . . . . . . . . . . . . . . . 21 3.2. Cache-Control . . . . . . . . . . . . . . . . . . . . . . 20
3.2.1. Request Cache-Control Directives . . . . . . . . . . . 22 3.2.1. Request Cache-Control Directives . . . . . . . . . . . 21
3.2.2. Response Cache-Control Directives . . . . . . . . . . 24 3.2.2. Response Cache-Control Directives . . . . . . . . . . 23
3.2.3. Cache Control Extensions . . . . . . . . . . . . . . . 26 3.2.3. Cache Control Extensions . . . . . . . . . . . . . . . 25
3.3. Expires . . . . . . . . . . . . . . . . . . . . . . . . . 27 3.3. Expires . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.4. Pragma . . . . . . . . . . . . . . . . . . . . . . . . . . 28 3.4. Pragma . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.5. Vary . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 3.5. Vary . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.6. Warning . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.6. Warning . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.6.1. 110 Response is Stale . . . . . . . . . . . . . . . . 31 3.6.1. 110 Response is Stale . . . . . . . . . . . . . . . . 30
3.6.2. 111 Revalidation Failed . . . . . . . . . . . . . . . 31 3.6.2. 111 Revalidation Failed . . . . . . . . . . . . . . . 30
3.6.3. 112 Disconnected Operation . . . . . . . . . . . . . . 31 3.6.3. 112 Disconnected Operation . . . . . . . . . . . . . . 30
3.6.4. 113 Heuristic Expiration . . . . . . . . . . . . . . . 32 3.6.4. 113 Heuristic Expiration . . . . . . . . . . . . . . . 31
3.6.5. 199 Miscellaneous Warning . . . . . . . . . . . . . . 32 3.6.5. 199 Miscellaneous Warning . . . . . . . . . . . . . . 31
3.6.6. 214 Transformation Applied . . . . . . . . . . . . . . 32 3.6.6. 214 Transformation Applied . . . . . . . . . . . . . . 31
3.6.7. 299 Miscellaneous Persistent Warning . . . . . . . . . 32 3.6.7. 299 Miscellaneous Persistent Warning . . . . . . . . . 31
3.6.8. Warn Code Extensions . . . . . . . . . . . . . . . . . 32 3.6.8. Warn Code Extensions . . . . . . . . . . . . . . . . . 31
4. History Lists . . . . . . . . . . . . . . . . . . . . . . . . 32 4. History Lists . . . . . . . . . . . . . . . . . . . . . . . . 31
5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 33 5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 32
5.1. Cache Directive Registry . . . . . . . . . . . . . . . . . 33 5.1. Cache Directive Registry . . . . . . . . . . . . . . . . . 32
5.2. Warn Code Registry . . . . . . . . . . . . . . . . . . . . 33 5.2. Warn Code Registry . . . . . . . . . . . . . . . . . . . . 32
5.3. Header Field Registration . . . . . . . . . . . . . . . . 34 5.3. Header Field Registration . . . . . . . . . . . . . . . . 33
6. Security Considerations . . . . . . . . . . . . . . . . . . . 34 6. Security Considerations . . . . . . . . . . . . . . . . . . . 33
7. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 34 7. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 33
8. References . . . . . . . . . . . . . . . . . . . . . . . . . . 35 8. References . . . . . . . . . . . . . . . . . . . . . . . . . . 34
8.1. Normative References . . . . . . . . . . . . . . . . . . . 35 8.1. Normative References . . . . . . . . . . . . . . . . . . . 34
8.2. Informative References . . . . . . . . . . . . . . . . . . 35 8.2. Informative References . . . . . . . . . . . . . . . . . . 34
Appendix A. Changes from RFC 2616 . . . . . . . . . . . . . . . . 36 Appendix A. Changes from RFC 2616 . . . . . . . . . . . . . . . . 35
Appendix B. Collected ABNF . . . . . . . . . . . . . . . . . . . 36 Appendix B. Collected ABNF . . . . . . . . . . . . . . . . . . . 35
Appendix C. Change Log (to be removed by RFC Editor before Appendix C. Change Log (to be removed by RFC Editor before
publication) . . . . . . . . . . . . . . . . . . . . 37 publication) . . . . . . . . . . . . . . . . . . . . 36
C.1. Since RFC 2616 . . . . . . . . . . . . . . . . . . . . . . 38 C.1. Since draft-ietf-httpbis-p6-cache-19 . . . . . . . . . . . 37
C.2. Since draft-ietf-httpbis-p6-cache-00 . . . . . . . . . . . 38 Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
C.3. Since draft-ietf-httpbis-p6-cache-01 . . . . . . . . . . . 38
C.4. Since draft-ietf-httpbis-p6-cache-02 . . . . . . . . . . . 39
C.5. Since draft-ietf-httpbis-p6-cache-03 . . . . . . . . . . . 39
C.6. Since draft-ietf-httpbis-p6-cache-04 . . . . . . . . . . . 39
C.7. Since draft-ietf-httpbis-p6-cache-05 . . . . . . . . . . . 39
C.8. Since draft-ietf-httpbis-p6-cache-06 . . . . . . . . . . . 40
C.9. Since draft-ietf-httpbis-p6-cache-07 . . . . . . . . . . . 40
C.10. Since draft-ietf-httpbis-p6-cache-08 . . . . . . . . . . . 40
C.11. Since draft-ietf-httpbis-p6-cache-09 . . . . . . . . . . . 41
C.12. Since draft-ietf-httpbis-p6-cache-10 . . . . . . . . . . . 41
C.13. Since draft-ietf-httpbis-p6-cache-11 . . . . . . . . . . . 42
C.14. Since draft-ietf-httpbis-p6-cache-12 . . . . . . . . . . . 42
C.15. Since draft-ietf-httpbis-p6-cache-13 . . . . . . . . . . . 42
C.16. Since draft-ietf-httpbis-p6-cache-14 . . . . . . . . . . . 42
C.17. Since draft-ietf-httpbis-p6-cache-15 . . . . . . . . . . . 43
C.18. Since draft-ietf-httpbis-p6-cache-16 . . . . . . . . . . . 43
C.19. Since draft-ietf-httpbis-p6-cache-17 . . . . . . . . . . . 43
C.20. Since draft-ietf-httpbis-p6-cache-18 . . . . . . . . . . . 43
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
1. Introduction 1. Introduction
HTTP is typically used for distributed information systems, where HTTP is typically used for distributed information systems, where
performance can be improved by the use of response caches. This performance can be improved by the use of response caches. This
document defines aspects of HTTP/1.1 related to caching and reusing document defines aspects of HTTP/1.1 related to caching and reusing
response messages. response messages.
1.1. Purpose 1.1. Purpose
skipping to change at page 8, line 21 skipping to change at page 7, line 21
OWS = <OWS, defined in [Part1], Section 3.2.1> OWS = <OWS, defined in [Part1], Section 3.2.1>
quoted-string = <quoted-string, defined in [Part1], Section 3.2.4> quoted-string = <quoted-string, defined in [Part1], Section 3.2.4>
token = <token, defined in [Part1], Section 3.2.4> token = <token, defined in [Part1], Section 3.2.4>
1.4.2. ABNF Rules defined in other Parts of the Specification 1.4.2. ABNF Rules defined in other Parts of the Specification
The ABNF rules below are defined in other parts: The ABNF rules below are defined in other parts:
field-name = <field-name, defined in [Part1], Section 3.2> field-name = <field-name, defined in [Part1], Section 3.2>
HTTP-date = <HTTP-date, defined in [Part2], Section 8> HTTP-date = <HTTP-date, defined in [Part2], Section 5.1>
port = <port, defined in [Part1], Section 2.7> port = <port, defined in [Part1], Section 2.7>
pseudonym = <pseudonym, defined in [Part1], Section 6.2> pseudonym = <pseudonym, defined in [Part1], Section 6.2>
uri-host = <uri-host, defined in [Part1], Section 2.7> uri-host = <uri-host, defined in [Part1], Section 2.7>
1.5. Delta Seconds 1.5. Delta Seconds
The delta-seconds rule specifies a non-negative integer, representing The delta-seconds rule specifies a non-negative integer, representing
time in seconds. time in seconds.
delta-seconds = 1*DIGIT delta-seconds = 1*DIGIT
skipping to change at page 11, line 37 skipping to change at page 10, line 37
Note that any of the requirements listed above can be overridden by a Note that any of the requirements listed above can be overridden by a
cache-control extension; see Section 3.2.3. cache-control extension; see Section 3.2.3.
When a stored response is used to satisfy a request without When a stored response is used to satisfy a request without
validation, a cache MUST include a single Age header field validation, a cache MUST include a single Age header field
(Section 3.1) in the response with a value equal to the stored (Section 3.1) in the response with a value equal to the stored
response's current_age; see Section 2.3.2. response's current_age; see Section 2.3.2.
A cache MUST write through requests with methods that are unsafe A cache MUST write through requests with methods that are unsafe
(Section 6.1.1 of [Part2]) to the origin server; i.e., a cache must (Section 2.1.1 of [Part2]) to the origin server; i.e., a cache is not
not generate a reply to such a request before having forwarded the allowed to generate a reply to such a request before having forwarded
request and having received a corresponding response. the request and having received a corresponding response.
Also, note that unsafe requests might invalidate already stored Also, note that unsafe requests might invalidate already stored
responses; see Section 2.6. responses; see Section 2.6.
When more than one suitable response is stored, a cache MUST use the When more than one suitable response is stored, a cache MUST use the
most recent response (as determined by the Date header field). It most recent response (as determined by the Date header field). It
can also forward a request with "Cache-Control: max-age=0" or "Cache- can also forward a request with "Cache-Control: max-age=0" or "Cache-
Control: no-cache" to disambiguate which response to use. Control: no-cache" to disambiguate which response to use.
A cache that does not have a clock available MUST NOT use stored A cache that does not have a clock available MUST NOT use stored
skipping to change at page 13, line 30 skipping to change at page 12, line 30
A heuristic freshness lifetime might be applicable; see A heuristic freshness lifetime might be applicable; see
Section 2.3.1.1. Section 2.3.1.1.
Note that this calculation is not vulnerable to clock skew, since all Note that this calculation is not vulnerable to clock skew, since all
of the information comes from the origin server. of the information comes from the origin server.
2.3.1.1. Calculating Heuristic Freshness 2.3.1.1. Calculating Heuristic Freshness
If no explicit expiration time is present in a stored response that If no explicit expiration time is present in a stored response that
has a status code whose definition allows heuristic freshness to be has a status code whose definition allows heuristic freshness to be
used (including the following in Section 7 of [Part2]: 200, 203, 206, used (including the following in Section 4 of [Part2]: 200, 203, 206,
300, 301 and 410), a cache MAY calculate a heuristic expiration time. 300, 301 and 410), a cache MAY calculate a heuristic expiration time.
A cache MUST NOT use heuristics to determine freshness for responses A cache MUST NOT use heuristics to determine freshness for responses
with status codes that do not explicitly allow it. with status codes that do not explicitly allow it.
When a heuristic is used to calculate freshness lifetime, a cache When a heuristic is used to calculate freshness lifetime, a cache
SHOULD attach a Warning header field with a 113 warn-code to the SHOULD attach a Warning header field with a 113 warn-code to the
response if its current_age is more than 24 hours and such a warning response if its current_age is more than 24 hours and such a warning
is not already present. is not already present.
Also, if the response has a Last-Modified header field (Section 2.2 Also, if the response has a Last-Modified header field (Section 2.2
skipping to change at page 14, line 29 skipping to change at page 13, line 29
The term "age_value" denotes the value of the Age header field The term "age_value" denotes the value of the Age header field
(Section 3.1), in a form appropriate for arithmetic operation; or (Section 3.1), in a form appropriate for arithmetic operation; or
0, if not available. 0, if not available.
date_value date_value
HTTP/1.1 requires origin servers to send a Date header field, if HTTP/1.1 requires origin servers to send a Date header field, if
possible, with every response, giving the time at which the possible, with every response, giving the time at which the
response was generated. The term "date_value" denotes the value response was generated. The term "date_value" denotes the value
of the Date header field, in a form appropriate for arithmetic of the Date header field, in a form appropriate for arithmetic
operations. See Section 10.2 of [Part2] for the definition of the operations. See Section 9.10 of [Part2] for the definition of the
Date header field, and for requirements regarding responses Date header field, and for requirements regarding responses
without it. without it.
now now
The term "now" means "the current value of the clock at the host The term "now" means "the current value of the clock at the host
performing the calculation". A cache SHOULD use NTP ([RFC1305]) performing the calculation". A cache SHOULD use NTP ([RFC1305])
or some similar protocol to synchronize its clocks to a globally or some similar protocol to synchronize its clocks to a globally
accurate time standard. accurate time standard.
skipping to change at page 18, line 47 skipping to change at page 17, line 47
o retain any Warning header fields in the stored response with warn- o retain any Warning header fields in the stored response with warn-
code 2xx; and, code 2xx; and,
o use other header fields provided in the response to replace all o use other header fields provided in the response to replace all
instances of the corresponding header fields in the stored instances of the corresponding header fields in the stored
response. response.
2.6. Request Methods that Invalidate 2.6. Request Methods that Invalidate
Because unsafe request methods (Section 6.1.1 of [Part2]) such as Because unsafe request methods (Section 2.1.1 of [Part2]) such as
PUT, POST or DELETE have the potential for changing state on the PUT, POST or DELETE have the potential for changing state on the
origin server, intervening caches can use them to keep their contents origin server, intervening caches can use them to keep their contents
up-to-date. up-to-date.
A cache MUST invalidate the effective Request URI (Section 5.5 of A cache MUST invalidate the effective Request URI (Section 5.5 of
[Part1]) as well as the URI(s) in the Location and Content-Location [Part1]) as well as the URI(s) in the Location and Content-Location
response header fields (if present) when a non-error response to a response header fields (if present) when a non-error response to a
request with an unsafe method is received. request with an unsafe method is received.
skipping to change at page 27, line 52 skipping to change at page 26, line 52
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 2.3 for further discussion response is considered stale. See Section 2.3 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.
The field-value is an absolute date and time as defined by HTTP-date The field-value is an absolute date and time as defined by HTTP-date
in Section 8 of [Part2]; a sender MUST use the rfc1123-date format. in Section 5.1 of [Part2]; a sender MUST use the rfc1123-date format.
Expires = HTTP-date Expires = HTTP-date
For example For example
Expires: Thu, 01 Dec 1994 16:00:00 GMT Expires: Thu, 01 Dec 1994 16:00:00 GMT
A cache MUST treat other invalid date formats, especially including A cache MUST treat other invalid date formats, especially including
the value "0", as in the past (i.e., "already expired"). the value "0", as in the past (i.e., "already expired").
skipping to change at page 35, line 8 skipping to change at page 34, line 8
7. Acknowledgments 7. Acknowledgments
See Section 9 of [Part1]. See Section 9 of [Part1].
8. References 8. References
8.1. Normative References 8.1. Normative References
[Part1] Fielding, R., Ed., Lafon, Y., Ed., and J. Reschke, Ed., [Part1] Fielding, R., Ed., Lafon, Y., Ed., and J. Reschke, Ed.,
"HTTP/1.1, part 1: URIs, Connections, and Message "HTTP/1.1, part 1: URIs, Connections, and Message
Parsing", draft-ietf-httpbis-p1-messaging-19 (work in Parsing", draft-ietf-httpbis-p1-messaging-latest (work in
progress), March 2012. progress), May 2012.
[Part2] Fielding, R., Ed., Lafon, Y., Ed., and J. Reschke, Ed., [Part2] Fielding, R., Ed., Lafon, Y., Ed., and J. Reschke, Ed.,
"HTTP/1.1, part 2: Message Semantics", "HTTP/1.1, part 2: Message Semantics",
draft-ietf-httpbis-p2-semantics-19 (work in progress), draft-ietf-httpbis-p2-semantics-latest (work in progress),
March 2012. May 2012.
[Part4] Fielding, R., Ed., Lafon, Y., Ed., and J. Reschke, Ed., [Part4] Fielding, R., Ed., Lafon, Y., Ed., and J. Reschke, Ed.,
"HTTP/1.1, part 4: Conditional Requests", "HTTP/1.1, part 4: Conditional Requests",
draft-ietf-httpbis-p4-conditional-19 (work in progress), draft-ietf-httpbis-p4-conditional-latest (work in
March 2012. progress), May 2012.
[Part5] Fielding, R., Ed., Lafon, Y., Ed., and J. Reschke, Ed., [Part5] Fielding, R., Ed., Lafon, Y., Ed., and J. Reschke, Ed.,
"HTTP/1.1, part 5: Range Requests and Partial Responses", "HTTP/1.1, part 5: Range Requests and Partial Responses",
draft-ietf-httpbis-p5-range-19 (work in progress), draft-ietf-httpbis-p5-range-latest (work in progress),
March 2012. May 2012.
[Part7] Fielding, R., Ed., Lafon, Y., Ed., and J. Reschke, Ed., [Part7] Fielding, R., Ed., Lafon, Y., Ed., and J. Reschke, Ed.,
"HTTP/1.1, part 7: Authentication", "HTTP/1.1, part 7: Authentication",
draft-ietf-httpbis-p7-auth-19 (work in progress), draft-ietf-httpbis-p7-auth-latest (work in progress),
March 2012. May 2012.
[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, March 1997. Requirement Levels", BCP 14, RFC 2119, March 1997.
[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, January 2008. Specifications: ABNF", STD 68, RFC 5234, January 2008.
8.2. Informative References 8.2. Informative References
[RFC1305] Mills, D., "Network Time Protocol (Version 3) [RFC1305] Mills, D., "Network Time Protocol (Version 3)
skipping to change at page 36, line 37 skipping to change at page 35, line 37
Appendix B. Collected ABNF Appendix B. Collected ABNF
Age = delta-seconds Age = delta-seconds
Cache-Control = *( "," OWS ) cache-directive *( OWS "," [ OWS Cache-Control = *( "," OWS ) cache-directive *( OWS "," [ OWS
cache-directive ] ) cache-directive ] )
Expires = HTTP-date Expires = HTTP-date
HTTP-date = <HTTP-date, defined in [Part2], Section 8> HTTP-date = <HTTP-date, defined in [Part2], Section 6.1>
OWS = <OWS, defined in [Part1], Section 3.2.1> OWS = <OWS, defined in [Part1], Section 3.2.1>
Pragma = *( "," OWS ) pragma-directive *( OWS "," [ OWS Pragma = *( "," OWS ) pragma-directive *( OWS "," [ OWS
pragma-directive ] ) pragma-directive ] )
Vary = "*" / ( *( "," OWS ) field-name *( OWS "," [ OWS field-name ] Vary = "*" / ( *( "," OWS ) field-name *( OWS "," [ OWS field-name ]
) ) ) )
Warning = *( "," OWS ) warning-value *( OWS "," [ OWS warning-value ] Warning = *( "," OWS ) warning-value *( OWS "," [ OWS warning-value ]
skipping to change at page 38, line 4 skipping to change at page 36, line 48
ABNF diagnostics: ABNF diagnostics:
; Age defined but not used ; Age defined but not used
; Cache-Control defined but not used ; Cache-Control defined but not used
; Expires defined but not used ; Expires defined but not used
; Pragma defined but not used ; Pragma defined but not used
; Vary defined but not used ; Vary defined but not used
; Warning defined but not used ; Warning defined but not used
Appendix C. Change Log (to be removed by RFC Editor before publication) Appendix C. Change Log (to be removed by RFC Editor before publication)
C.1. Since RFC 2616
Extracted relevant partitions from [RFC2616].
C.2. Since draft-ietf-httpbis-p6-cache-00
Closed issues:
o <http://tools.ietf.org/wg/httpbis/trac/ticket/9>: "Trailer"
(<http://purl.org/NET/http-errata#trailer-hop>)
o <http://tools.ietf.org/wg/httpbis/trac/ticket/12>: "Invalidation
after Update or Delete"
(<http://purl.org/NET/http-errata#invalidupd>)
o <http://tools.ietf.org/wg/httpbis/trac/ticket/35>: "Normative and
Informative references"
o <http://tools.ietf.org/wg/httpbis/trac/ticket/48>: "Date reference
typo"
o <http://tools.ietf.org/wg/httpbis/trac/ticket/49>: "Connection
header text"
o <http://tools.ietf.org/wg/httpbis/trac/ticket/65>: "Informative
references"
o <http://tools.ietf.org/wg/httpbis/trac/ticket/66>: "ISO-8859-1
Reference"
o <http://tools.ietf.org/wg/httpbis/trac/ticket/86>: "Normative up-
to-date references"
o <http://tools.ietf.org/wg/httpbis/trac/ticket/87>: "typo in
13.2.2"
Other changes:
o Use names of RFC4234 core rules DQUOTE and HTAB (work in progress
on <http://tools.ietf.org/wg/httpbis/trac/ticket/36>)
C.3. Since draft-ietf-httpbis-p6-cache-01
Closed issues:
o <http://tools.ietf.org/wg/httpbis/trac/ticket/82>: "rel_path not
used"
Other changes:
o Get rid of duplicate BNF rule names ("host" -> "uri-host") (work
in progress on <http://tools.ietf.org/wg/httpbis/trac/ticket/36>)
o Add explicit references to BNF syntax and rules imported from
other parts of the specification.
C.4. Since draft-ietf-httpbis-p6-cache-02
Ongoing work on IANA Message Header Field Registration
(<http://tools.ietf.org/wg/httpbis/trac/ticket/40>):
o Reference RFC 3984, and update header field registrations for
header fields defined in this document.
C.5. Since draft-ietf-httpbis-p6-cache-03
Closed issues:
o <http://tools.ietf.org/wg/httpbis/trac/ticket/106>: "Vary header
classification"
C.6. Since draft-ietf-httpbis-p6-cache-04
Ongoing work on ABNF conversion
(<http://tools.ietf.org/wg/httpbis/trac/ticket/36>):
o Use "/" instead of "|" for alternatives.
o Introduce new ABNF rules for "bad" whitespace ("BWS"), optional
whitespace ("OWS") and required whitespace ("RWS").
o Rewrite ABNFs to spell out whitespace rules, factor out header
field value format definitions.
C.7. Since draft-ietf-httpbis-p6-cache-05
This is a total rewrite of this part of the specification.
Affected issues:
o <http://tools.ietf.org/wg/httpbis/trac/ticket/54>: "Definition of
1xx Warn-Codes"
o <http://tools.ietf.org/wg/httpbis/trac/ticket/60>: "Placement of
13.5.1 and 13.5.2"
o <http://tools.ietf.org/wg/httpbis/trac/ticket/138>: "The role of
Warning and Semantic Transparency in Caching"
o <http://tools.ietf.org/wg/httpbis/trac/ticket/139>: "Methods and
Caching"
In addition: Final work on ABNF conversion
(<http://tools.ietf.org/wg/httpbis/trac/ticket/36>):
o Add appendix containing collected and expanded ABNF, reorganize
ABNF introduction.
C.8. Since draft-ietf-httpbis-p6-cache-06
Closed issues:
o <http://tools.ietf.org/wg/httpbis/trac/ticket/161>: "base for
numeric protocol elements"
Affected issues:
o <http://tools.ietf.org/wg/httpbis/trac/ticket/37>: "Vary and non-
existant headers"
C.9. Since draft-ietf-httpbis-p6-cache-07
Closed issues:
o <http://tools.ietf.org/wg/httpbis/trac/ticket/54>: "Definition of
1xx Warn-Codes"
o <http://tools.ietf.org/wg/httpbis/trac/ticket/167>: "Content-
Location on 304 responses"
o <http://tools.ietf.org/wg/httpbis/trac/ticket/169>: "private and
no-cache CC directives with headers"
o <http://tools.ietf.org/wg/httpbis/trac/ticket/187>: "RFC2047 and
warn-text"
C.10. Since draft-ietf-httpbis-p6-cache-08
Closed issues: Changes up to the first Working Group Last Call draft are summarized
in <http://trac.tools.ietf.org/html/
o <http://tools.ietf.org/wg/httpbis/trac/ticket/147>: "serving draft-ietf-httpbis-p6-cache-19#appendix-C>.
negotiated responses from cache: header-specific canonicalization"
o <http://tools.ietf.org/wg/httpbis/trac/ticket/197>: "Effect of CC
directives on history lists"
o <http://tools.ietf.org/wg/httpbis/trac/ticket/291>: "Cache
Extensions can override no-store, etc."
Affected issues:
o <http://tools.ietf.org/wg/httpbis/trac/ticket/199>: Status codes
and caching
Partly resolved issues:
o <http://tools.ietf.org/wg/httpbis/trac/ticket/60>: "Placement of
13.5.1 and 13.5.2"
C.11. Since draft-ietf-httpbis-p6-cache-09
Closed issues:
o <http://tools.ietf.org/wg/httpbis/trac/ticket/29>: "Age
calculation"
o <http://tools.ietf.org/wg/httpbis/trac/ticket/168>: "Clarify
differences between / requirements for request and response CC
directives"
o <http://tools.ietf.org/wg/httpbis/trac/ticket/174>: "Caching
authenticated responses"
o <http://tools.ietf.org/wg/httpbis/trac/ticket/208>: "IANA registry
for cache-control directives"
o <http://tools.ietf.org/wg/httpbis/trac/ticket/211>: "Heuristic
caching of URLs with query components"
Partly resolved issues:
o <http://tools.ietf.org/wg/httpbis/trac/ticket/196>: "Term for the
requested resource's URI"
C.12. Since draft-ietf-httpbis-p6-cache-10
Closed issues:
o <http://tools.ietf.org/wg/httpbis/trac/ticket/109>: "Clarify
entity / representation / variant terminology"
o <http://tools.ietf.org/wg/httpbis/trac/ticket/220>: "consider
removing the 'changes from 2068' sections"
o <http://tools.ietf.org/wg/httpbis/trac/ticket/223>: "Allowing
heuristic caching for new status codes"
o Clean up TODOs and prose in "Combining Responses."
C.13. Since draft-ietf-httpbis-p6-cache-11
Closed issues:
o <http://tools.ietf.org/wg/httpbis/trac/ticket/204>: "Text about
clock requirement for caches belongs in p6"
C.14. Since draft-ietf-httpbis-p6-cache-12
Closed issues:
o <http://tools.ietf.org/wg/httpbis/trac/ticket/224>: "Header
Classification"
o <http://tools.ietf.org/wg/httpbis/trac/ticket/268>: "Clarify
'public'"
C.15. Since draft-ietf-httpbis-p6-cache-13
Closed issues:
o <http://tools.ietf.org/wg/httpbis/trac/ticket/276>: "untangle
ABNFs for header fields"
C.16. Since draft-ietf-httpbis-p6-cache-14
Closed issues:
o <http://tools.ietf.org/wg/httpbis/trac/ticket/38>: "Mismatch Vary"
o <http://tools.ietf.org/wg/httpbis/trac/ticket/235>: "Cache
Invalidation only happens upon successful responses"
o <http://tools.ietf.org/wg/httpbis/trac/ticket/282>: "Recommend
minimum sizes for protocol elements"
o <http://tools.ietf.org/wg/httpbis/trac/ticket/289>: "Proxies don't
'understand' methods"
o <http://tools.ietf.org/wg/httpbis/trac/ticket/291>: "Cache
Extensions can override no-store, etc."
o <http://tools.ietf.org/wg/httpbis/trac/ticket/292>: "Pragma"
C.17. Since draft-ietf-httpbis-p6-cache-15
Closed issues:
o <http://tools.ietf.org/wg/httpbis/trac/ticket/290>: "Motivate one-
year limit for Expires"
C.18. Since draft-ietf-httpbis-p6-cache-16
Closed issues:
o <http://tools.ietf.org/wg/httpbis/trac/ticket/186>: "Document
HTTP's error-handling philosophy"
o <http://tools.ietf.org/wg/httpbis/trac/ticket/317>: "Cache-Control
directive case sensitivity"
C.19. Since draft-ietf-httpbis-p6-cache-17
Closed issues:
o <http://tools.ietf.org/wg/httpbis/trac/ticket/293>: "Interaction
of request and response Cache-Control"
o <http://tools.ietf.org/wg/httpbis/trac/ticket/212>: "Refining age
for 1.1 proxy chains"
o <http://tools.ietf.org/wg/httpbis/trac/ticket/274>: "warn-code
registry"
C.20. Since draft-ietf-httpbis-p6-cache-18
Closed issues:
o <http://tools.ietf.org/wg/httpbis/trac/ticket/227>: "Combining C.1. Since draft-ietf-httpbis-p6-cache-19
HEAD responses"
o <http://tools.ietf.org/wg/httpbis/trac/ticket/337>: "Field names None yet.
in cache-control header arguments"
Index Index
1 1
110 Response is Stale (warn code) 31 110 Response is Stale (warn code) 30
111 Revalidation Failed (warn code) 31 111 Revalidation Failed (warn code) 30
112 Disconnected Operation (warn code) 31 112 Disconnected Operation (warn code) 30
113 Heuristic Expiration (warn code) 32 113 Heuristic Expiration (warn code) 31
199 Miscellaneous Warning (warn code) 32 199 Miscellaneous Warning (warn code) 31
2 2
214 Transformation Applied (warn code) 32 214 Transformation Applied (warn code) 31
299 Miscellaneous Persistent Warning (warn code) 32 299 Miscellaneous Persistent Warning (warn code) 31
A A
age 6 age 5
Age header field 21 Age header field 20
C C
cache 5 cache 4
Cache Directives Cache Directives
max-age 23, 26 max-age 22, 25
max-stale 23 max-stale 22
min-fresh 23 min-fresh 22
must-revalidate 25 must-revalidate 24
no-cache 22, 24 no-cache 21, 23
no-store 22, 25 no-store 21, 24
no-transform 23, 26 no-transform 22, 25
only-if-cached 23 only-if-cached 22
private 24 private 23
proxy-revalidate 26 proxy-revalidate 25
public 24 public 23
s-maxage 26 s-maxage 25
cache entry 8 cache entry 7
cache key 8 cache key 7
Cache-Control header field 21 Cache-Control header field 20
cacheable 5 cacheable 4
E E
Expires header field 27 Expires header field 26
explicit expiration time 6 explicit expiration time 5
F F
first-hand 6 first-hand 5
fresh 6 fresh 5
freshness lifetime 6 freshness lifetime 5
G G
Grammar Grammar
Age 21 Age 20
Cache-Control 22 Cache-Control 21
cache-extension 22 cache-extension 21
cache-request-directive 22 cache-request-directive 21
cache-response-directive 24 cache-response-directive 23
delta-seconds 8 delta-seconds 7
Expires 28 Expires 27
extension-pragma 28 extension-pragma 27
Pragma 28 Pragma 27
pragma-directive 28 pragma-directive 27
Vary 29 Vary 28
warn-agent 30 warn-agent 29
warn-code 30 warn-code 29
warn-date 30 warn-date 29
warn-text 30 warn-text 29
Warning 30 Warning 29
warning-value 30 warning-value 29
H H
Header Fields Header Fields
Age 21 Age 20
Cache-Control 21 Cache-Control 20
Expires 27 Expires 26
Pragma 28 Pragma 27
Vary 29 Vary 28
Warning 30 Warning 29
heuristic expiration time 6 heuristic expiration time 5
M M
max-age max-age
Cache Directive 23, 26 Cache Directive 22, 25
max-stale max-stale
Cache Directive 23 Cache Directive 22
min-fresh min-fresh
Cache Directive 23 Cache Directive 22
must-revalidate must-revalidate
Cache Directive 25 Cache Directive 24
N N
no-cache no-cache
Cache Directive 22, 24 Cache Directive 21, 23
no-store no-store
Cache Directive 22, 25 Cache Directive 21, 24
no-transform no-transform
Cache Directive 23, 26 Cache Directive 22, 25
O O
only-if-cached only-if-cached
Cache Directive 23 Cache Directive 22
P P
Pragma header field 28 Pragma header field 27
private private
Cache Directive 24 Cache Directive 23
private cache 5 private cache 4
proxy-revalidate proxy-revalidate
Cache Directive 26 Cache Directive 25
public public
Cache Directive 24 Cache Directive 23
S S
s-maxage s-maxage
Cache Directive 26 Cache Directive 25
shared cache 5 shared cache 4
stale 6 stale 5
strong validator 7 strong validator 6
V V
validator 6 validator 5
strong 7 strong 6
Vary header field 29 Vary header field 28
W W
Warn Codes Warn Codes
110 Response is Stale 31 110 Response is Stale 30
111 Revalidation Failed 31 111 Revalidation Failed 30
112 Disconnected Operation 31 112 Disconnected Operation 30
113 Heuristic Expiration 32 113 Heuristic Expiration 31
199 Miscellaneous Warning 32 199 Miscellaneous Warning 31
214 Transformation Applied 32 214 Transformation Applied 31
299 Miscellaneous Persistent Warning 32 299 Miscellaneous Persistent Warning 31
Warning header field 30 Warning header field 29
Authors' Addresses Authors' Addresses
Roy T. Fielding (editor) Roy T. Fielding (editor)
Adobe Systems Incorporated Adobe Systems Incorporated
345 Park Ave 345 Park Ave
San Jose, CA 95110 San Jose, CA 95110
USA USA
EMail: fielding@gbiv.com EMail: fielding@gbiv.com
 End of changes. 48 change blocks. 
460 lines changed or deleted 167 lines changed or added

This html diff was produced by rfcdiff 1.38. The latest version is available from http://tools.ietf.org/tools/rfcdiff/