draft-ietf-httpbis-p6-cache-13.txt   draft-ietf-httpbis-p6-cache-14.txt 
HTTPbis Working Group R. Fielding, Ed. HTTPbis Working Group R. Fielding, Ed.
Internet-Draft Adobe Internet-Draft Adobe
Obsoletes: 2616 (if approved) J. Gettys Obsoletes: 2616 (if approved) J. Gettys
Intended status: Standards Track Alcatel-Lucent Intended status: Standards Track Alcatel-Lucent
Expires: September 15, 2011 J. Mogul Expires: October 20, 2011 J. Mogul
HP HP
H. Frystyk H. Frystyk
Microsoft Microsoft
L. Masinter L. Masinter
Adobe Adobe
P. Leach P. Leach
Microsoft Microsoft
T. Berners-Lee T. Berners-Lee
W3C/MIT W3C/MIT
Y. Lafon, Ed. Y. Lafon, Ed.
W3C W3C
M. Nottingham, Ed. M. Nottingham, Ed.
J. Reschke, Ed. J. Reschke, Ed.
greenbytes greenbytes
March 14, 2011 April 18, 2011
HTTP/1.1, part 6: Caching HTTP/1.1, part 6: Caching
draft-ietf-httpbis-p6-cache-13 draft-ietf-httpbis-p6-cache-14
Abstract Abstract
The Hypertext Transfer Protocol (HTTP) is an application-level The Hypertext Transfer Protocol (HTTP) is an application-level
protocol for distributed, collaborative, hypermedia information protocol for distributed, collaborative, hypermedia information
systems. This document is Part 6 of the seven-part specification systems. This document is Part 6 of the seven-part specification
that defines the protocol referred to as "HTTP/1.1" and, taken that defines the protocol referred to as "HTTP/1.1" and, taken
together, obsoletes RFC 2616. Part 6 defines requirements on HTTP together, obsoletes RFC 2616. Part 6 defines requirements on HTTP
caches and the associated header fields that control cache behavior caches and the associated header fields that control cache behavior
or indicate cacheable response messages. or indicate cacheable response messages.
Editorial Note (To be removed by RFC Editor) Editorial Note (To be removed by RFC Editor)
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). The current issues list is group mailing list (ietf-http-wg@w3.org), which is archived at
at <http://tools.ietf.org/wg/httpbis/trac/report/3> and related <http://lists.w3.org/Archives/Public/ietf-http-wg/>.
The current issues list is at
<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.14. The changes in this draft are summarized in Appendix C.15.
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
skipping to change at page 2, line 17 skipping to change at page 2, line 20
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 15, 2011. This Internet-Draft will expire on October 20, 2011.
Copyright Notice Copyright Notice
Copyright (c) 2011 IETF Trust and the persons identified as the Copyright (c) 2011 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 4, line 10 skipping to change at page 4, line 12
C.5. Since draft-ietf-httpbis-p6-cache-03 . . . . . . . . . . . 35 C.5. Since draft-ietf-httpbis-p6-cache-03 . . . . . . . . . . . 35
C.6. Since draft-ietf-httpbis-p6-cache-04 . . . . . . . . . . . 35 C.6. Since draft-ietf-httpbis-p6-cache-04 . . . . . . . . . . . 35
C.7. Since draft-ietf-httpbis-p6-cache-05 . . . . . . . . . . . 36 C.7. Since draft-ietf-httpbis-p6-cache-05 . . . . . . . . . . . 36
C.8. Since draft-ietf-httpbis-p6-cache-06 . . . . . . . . . . . 36 C.8. Since draft-ietf-httpbis-p6-cache-06 . . . . . . . . . . . 36
C.9. Since draft-ietf-httpbis-p6-cache-07 . . . . . . . . . . . 36 C.9. Since draft-ietf-httpbis-p6-cache-07 . . . . . . . . . . . 36
C.10. Since draft-ietf-httpbis-p6-cache-08 . . . . . . . . . . . 37 C.10. Since draft-ietf-httpbis-p6-cache-08 . . . . . . . . . . . 37
C.11. Since draft-ietf-httpbis-p6-cache-09 . . . . . . . . . . . 37 C.11. Since draft-ietf-httpbis-p6-cache-09 . . . . . . . . . . . 37
C.12. Since draft-ietf-httpbis-p6-cache-10 . . . . . . . . . . . 38 C.12. Since draft-ietf-httpbis-p6-cache-10 . . . . . . . . . . . 38
C.13. Since draft-ietf-httpbis-p6-cache-11 . . . . . . . . . . . 38 C.13. Since draft-ietf-httpbis-p6-cache-11 . . . . . . . . . . . 38
C.14. Since draft-ietf-httpbis-p6-cache-12 . . . . . . . . . . . 38 C.14. Since draft-ietf-httpbis-p6-cache-12 . . . . . . . . . . . 38
C.15. Since draft-ietf-httpbis-p6-cache-13 . . . . . . . . . . . 38
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
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 10, line 13 skipping to change at page 10, line 13
request and having received a corresponding response. 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.5. responses; see Section 2.5.
A cache MUST use the most recent response (as determined by the Date A cache MUST use the most recent response (as determined by the Date
header field) when more than one suitable response is stored. It can header field) when more than one suitable response is stored. It can
also forward a request with "Cache-Control: max-age=0" or "Cache- 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 used stored A cache that does not have a clock available MUST NOT use stored
responses without revalidating them on every use. A cache, responses without revalidating them on every use. A cache,
especially a shared cache, SHOULD use a mechanism, such as NTP especially a shared cache, SHOULD use a mechanism, such as NTP
[RFC1305], to synchronize its clock with a reliable external [RFC1305], to synchronize its clock with a reliable external
standard. standard.
2.3. Freshness Model 2.3. Freshness Model
When a response is "fresh" in the cache, it can be used to satisfy When a response is "fresh" in the cache, it can be used to satisfy
subsequent requests without contacting the origin server, thereby subsequent requests without contacting the origin server, thereby
improving efficiency. improving efficiency.
skipping to change at page 12, line 5 skipping to change at page 12, line 5
used (including the following in Section 8 of [Part2]: 200, 203, 206, used (including the following in Section 8 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 6.6 Also, if the response has a Last-Modified header field (Section 2.1
of [Part4]), a cache SHOULD NOT use a heuristic expiration value that of [Part4]), a cache SHOULD NOT use a heuristic expiration value that
is more than some fraction of the interval since that time. A is more than some fraction of the interval since that time. A
typical setting of this fraction might be 10%. typical setting of this fraction might be 10%.
Note: RFC 2616 ([RFC2616], Section 13.9) required that caches do Note: RFC 2616 ([RFC2616], Section 13.9) required that caches do
not calculate heuristic freshness for URIs with query components not calculate heuristic freshness for URIs with query components
(i.e., those containing '?'). In practice, this has not been (i.e., those containing '?'). In practice, this has not been
widely implemented. Therefore, servers are encouraged to send widely implemented. Therefore, servers are encouraged to send
explicit directives (e.g., Cache-Control: no-cache) if they wish explicit directives (e.g., Cache-Control: no-cache) if they wish
to preclude caching. to preclude caching.
skipping to change at page 14, line 9 skipping to change at page 14, line 9
according to the calculations in Section 2.3. according to the calculations in Section 2.3.
A cache MUST NOT return a stale response if it is prohibited by an A cache MUST NOT return a stale response if it is prohibited by an
explicit in-protocol directive (e.g., by a "no-store" or "no-cache" explicit in-protocol directive (e.g., by a "no-store" or "no-cache"
cache directive, a "must-revalidate" cache-response-directive, or an cache directive, a "must-revalidate" cache-response-directive, or an
applicable "s-maxage" or "proxy-revalidate" cache-response-directive; applicable "s-maxage" or "proxy-revalidate" cache-response-directive;
see Section 3.2.2). see Section 3.2.2).
A cache SHOULD NOT return stale responses unless it is disconnected A cache SHOULD NOT return stale responses unless it is disconnected
(i.e., it cannot contact the origin server or otherwise find a (i.e., it cannot contact the origin server or otherwise find a
forward path) or otherwise explicitly allowed (e.g., the max-stale forward path) or doing so is explicitly allowed (e.g., by the max-
request directive; see Section 3.2.1). stale request directive; see Section 3.2.1).
A cache SHOULD append a Warning header field with the 110 warn-code A cache SHOULD append a Warning header field with the 110 warn-code
(see Section 3.6) to stale responses. Likewise, a cache SHOULD add (see Section 3.6) to stale responses. Likewise, a cache SHOULD add
the 112 warn-code to stale responses if the cache is disconnected. the 112 warn-code to stale responses if the cache is disconnected.
If a cache receives a first-hand response (either an entire response, If a cache receives a first-hand response (either an entire response,
or a 304 (Not Modified) response) that it would normally forward to or a 304 (Not Modified) response) that it would normally forward to
the requesting client, and the received response is no longer fresh, the requesting client, and the received response is no longer fresh,
the cache SHOULD forward it to the requesting client without adding a the cache SHOULD forward it to the requesting client without adding a
new Warning (but without removing any existing Warning header new Warning (but without removing any existing Warning header
skipping to change at page 17, line 26 skipping to change at page 17, line 26
If the new response contains an ETag, it identifies the stored If the new response contains an ETag, it identifies the stored
response to use. [[TODO-mention-CL: might need language about response to use. [[TODO-mention-CL: might need language about
Content-Location here]][[TODO-select-for-combine: Shouldn't this be Content-Location here]][[TODO-select-for-combine: Shouldn't this be
the selected response?]] the selected response?]]
When the new response's status code is 206 (partial content), a cache When the new response's status code is 206 (partial content), a cache
MUST NOT combine it with the old response if either response does not MUST NOT combine it with the old response if either response does not
have a validator, and MUST NOT combine it with the old response when have a validator, and MUST NOT combine it with the old response when
those validators do not match with the strong comparison function those validators do not match with the strong comparison function
(see Section 4 of [Part4]). (see Section 2.2.2 of [Part4]).
The stored response header fields are used as those of the updated The stored response header fields are used as those of the updated
response, except that response, except that
o a cache MUST delete any stored Warning header fields with warn- o a cache MUST delete any stored Warning header fields with warn-
code 1xx (see Section 3.6). code 1xx (see Section 3.6).
o a cache MUST retain any stored Warning header fields with warn- o a cache MUST retain any stored Warning header fields with warn-
code 2xx. code 2xx.
skipping to change at page 18, line 12 skipping to change at page 18, line 12
This section defines the syntax and semantics of HTTP/1.1 header This section defines the syntax and semantics of HTTP/1.1 header
fields related to caching. fields related to caching.
3.1. Age 3.1. Age
The "Age" header field conveys the sender's estimate of the amount of The "Age" header field conveys the sender's estimate of the amount of
time since the response was generated or successfully validated at time since the response was generated or successfully validated at
the origin server. Age values are calculated as specified in the origin server. Age values are calculated as specified in
Section 2.3.2. Section 2.3.2.
Age = "Age" ":" OWS Age-v Age = delta-seconds
Age-v = delta-seconds
Age field-values are non-negative integers, representing time in Age field-values are non-negative integers, representing time in
seconds. seconds.
delta-seconds = 1*DIGIT delta-seconds = 1*DIGIT
If a cache receives a value larger than the largest positive integer If a cache receives a value larger than the largest positive integer
it can represent, or if any of its age calculations overflows, it it can represent, or if any of its age calculations overflows, it
MUST transmit an Age header field with a field-value of 2147483648 MUST transmit an Age header field with a field-value of 2147483648
(2^31). Recipients parsing the Age header field-value SHOULD use an (2^31). Recipients parsing the Age header field-value SHOULD use an
skipping to change at page 19, line 5 skipping to change at page 19, line 5
Note: HTTP/1.0 caches might not implement Cache-Control and might Note: HTTP/1.0 caches might not implement Cache-Control and might
only implement Pragma: no-cache (see Section 3.4). only implement Pragma: no-cache (see Section 3.4).
A proxy, whether or not it implements a cache, MUST pass cache A proxy, whether or not it implements a cache, MUST pass cache
directives through in forwarded messages, regardless of their directives through in forwarded messages, regardless of their
significance to that application, since the directives might be significance to that application, since the directives might be
applicable to all recipients along the request/response chain. It is applicable to all recipients along the request/response chain. It is
not possible to target a directive to a specific cache. not possible to target a directive to a specific cache.
Cache-Control = "Cache-Control" ":" OWS Cache-Control-v Cache-Control = 1#cache-directive
Cache-Control-v = 1#cache-directive
cache-directive = cache-request-directive cache-directive = cache-request-directive
/ cache-response-directive / cache-response-directive
cache-extension = token [ "=" ( token / quoted-string ) ] cache-extension = token [ "=" ( token / quoted-string ) ]
3.2.1. Request Cache-Control Directives 3.2.1. Request Cache-Control Directives
cache-request-directive = cache-request-directive =
"no-cache" "no-cache"
skipping to change at page 23, line 13 skipping to change at page 23, line 13
transaction. transaction.
proxy-revalidate proxy-revalidate
The proxy-revalidate response directive has the same meaning as The proxy-revalidate response directive has the same meaning as
the must-revalidate response directive, except that it does not the must-revalidate response directive, except that it does not
apply to private caches. apply to private caches.
max-age max-age
The max-age response directive indicates that response is to be The max-age response directive indicates that the response is to
considered stale after its age is greater than the specified be considered stale after its age is greater than the specified
number of seconds. number of seconds.
s-maxage s-maxage
The s-maxage response directive indicates that, in shared caches, The s-maxage response directive indicates that, in shared caches,
the maximum age specified by this directive overrides the maximum the maximum age specified by this directive overrides the maximum
age specified by either the max-age directive or the Expires age specified by either the max-age directive or the Expires
header field. The s-maxage directive also implies the semantics header field. The s-maxage directive also implies the semantics
of the proxy-revalidate response directive. of the proxy-revalidate response directive.
skipping to change at page 25, line 6 skipping to change at page 25, line 6
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 6.1 of [Part1]; a sender MUST use the rfc1123-date format. in Section 6.1 of [Part1]; a sender MUST use the rfc1123-date format.
Expires = "Expires" ":" OWS Expires-v Expires = HTTP-date
Expires-v = HTTP-date
For example For example
Expires: Thu, 01 Dec 1994 16:00:00 GMT Expires: Thu, 01 Dec 1994 16:00:00 GMT
Note: If a response includes a Cache-Control field with the max- Note: If a response includes a Cache-Control field with the max-
age directive (see Section 3.2.2), that directive overrides the age directive (see Section 3.2.2), that directive overrides the
Expires field. Likewise, the s-maxage directive overrides Expires Expires field. Likewise, the s-maxage directive overrides Expires
in shared caches. in shared caches.
skipping to change at page 25, line 32 skipping to change at page 25, line 31
the value "0", as in the past (i.e., "already expired"). the value "0", as in the past (i.e., "already expired").
3.4. Pragma 3.4. Pragma
The "Pragma" header field is used to include implementation-specific The "Pragma" header field is used to include implementation-specific
directives that might apply to any recipient along the request/ directives that might apply to any recipient along the request/
response chain. All pragma directives specify optional behavior from response chain. All pragma directives specify optional behavior from
the viewpoint of the protocol; however, some systems MAY require that the viewpoint of the protocol; however, some systems MAY require that
behavior be consistent with the directives. behavior be consistent with the directives.
Pragma = "Pragma" ":" OWS Pragma-v Pragma = 1#pragma-directive
Pragma-v = 1#pragma-directive 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 no-cache directive is present in a request message, a cache When the no-cache directive is present in a request message, a cache
SHOULD forward the request toward the origin server even if it has a SHOULD forward the request toward the origin server even if it has a
stored copy of what is being requested. This pragma directive has stored copy of what is being requested. This pragma directive has
the same semantics as the no-cache response directive (see the same semantics as the no-cache response directive (see
Section 3.2.2) and is defined here for backward compatibility with Section 3.2.2) and is defined here for backward compatibility with
HTTP/1.0. A client SHOULD include both header fields when a no-cache HTTP/1.0. A client SHOULD include both header fields when a no-cache
request is sent to a server not known to be HTTP/1.1 compliant. A request is sent to a server not known to be HTTP/1.1 compliant. A
cache SHOULD treat "Pragma: no-cache" as if the client had sent cache SHOULD treat "Pragma: no-cache" as if the client had sent
"Cache-Control: no-cache". "Cache-Control: no-cache".
skipping to change at page 26, line 21 skipping to change at page 26, line 20
Caches use this information, in part, to determine whether a stored Caches use this information, in part, to determine whether a stored
response can be used to satisfy a given request; see Section 2.7. response can be used to satisfy a given request; see Section 2.7.
determines, while the response is fresh, whether a cache is permitted determines, while the response is fresh, whether a cache is permitted
to use the response to reply to a subsequent request without to use the response to reply to a subsequent request without
validation; see Section 2.7. validation; see Section 2.7.
In uncacheable or stale responses, the Vary field value advises the In uncacheable or stale responses, the Vary field value advises the
user agent about the criteria that were used to select the user agent about the criteria that were used to select the
representation. representation.
Vary = "Vary" ":" OWS Vary-v Vary = "*" / 1#field-name
Vary-v = "*" / 1#field-name
The set of header fields named by the Vary field value is known as The set of header fields named by the Vary field value is known as
the selecting header fields. the selecting header fields.
A server SHOULD include a Vary header field with any cacheable A server SHOULD include a Vary header field with any cacheable
response that is subject to server-driven negotiation. Doing so response that is subject to server-driven negotiation. Doing so
allows a cache to properly interpret future requests on that resource allows a cache to properly interpret future requests on that resource
and informs the user agent about the presence of negotiation on that and informs the user agent about the presence of negotiation on that
resource. A server MAY include a Vary header field with a non- resource. A server MAY include a Vary header field with a non-
cacheable response that is subject to server-driven negotiation, cacheable response that is subject to server-driven negotiation,
skipping to change at page 27, line 15 skipping to change at page 27, line 13
transformations applied to the payload of the message. transformations applied to the payload of the message.
Warnings can be used for other purposes, both cache-related and Warnings can be used for other purposes, both cache-related and
otherwise. The use of a warning, rather than an error status code, otherwise. The use of a warning, rather than an error status code,
distinguishes these responses from true failures. distinguishes these responses from true failures.
Warning header fields can in general be applied to any message, Warning header fields can in general be applied to any message,
however some warn-codes are specific to caches and can only be however some warn-codes are specific to caches and can only be
applied to response messages. applied to response messages.
Warning = "Warning" ":" OWS Warning-v Warning = 1#warning-value
Warning-v = 1#warning-value
warning-value = warn-code SP warn-agent SP warn-text warning-value = warn-code SP warn-agent SP warn-text
[SP warn-date] [SP warn-date]
warn-code = 3DIGIT warn-code = 3DIGIT
warn-agent = ( uri-host [ ":" port ] ) / pseudonym warn-agent = ( uri-host [ ":" port ] ) / pseudonym
; the name or pseudonym of the server adding ; the name or pseudonym of the server adding
; the Warning header field, for use in debugging ; the Warning header field, for use in debugging
warn-text = quoted-string warn-text = quoted-string
warn-date = DQUOTE HTTP-date DQUOTE warn-date = DQUOTE HTTP-date DQUOTE
skipping to change at page 31, line 18 skipping to change at page 31, line 18
suggestions and comments from individuals including: Shel Kaphan, suggestions and comments from individuals including: Shel Kaphan,
Paul Leach, Koen Holtman, David Morris, and Larry Masinter. Paul Leach, Koen Holtman, David Morris, and Larry Masinter.
8. References 8. References
8.1. Normative References 8.1. Normative References
[Part1] Fielding, R., Ed., Gettys, J., Mogul, J., Frystyk, H., [Part1] Fielding, R., Ed., Gettys, J., Mogul, J., Frystyk, H.,
Masinter, L., Leach, P., Berners-Lee, T., Lafon, Y., Ed., Masinter, L., Leach, P., Berners-Lee, T., Lafon, Y., Ed.,
and J. Reschke, Ed., "HTTP/1.1, part 1: URIs, Connections, and J. Reschke, Ed., "HTTP/1.1, part 1: URIs, Connections,
and Message Parsing", draft-ietf-httpbis-p1-messaging-13 and Message Parsing", draft-ietf-httpbis-p1-messaging-14
(work in progress), March 2011. (work in progress), April 2011.
[Part2] Fielding, R., Ed., Gettys, J., Mogul, J., Frystyk, H., [Part2] Fielding, R., Ed., Gettys, J., Mogul, J., Frystyk, H.,
Masinter, L., Leach, P., Berners-Lee, T., Lafon, Y., Ed., Masinter, L., Leach, P., Berners-Lee, T., Lafon, Y., Ed.,
and J. Reschke, Ed., "HTTP/1.1, part 2: Message and J. Reschke, Ed., "HTTP/1.1, part 2: Message
Semantics", draft-ietf-httpbis-p2-semantics-13 (work in Semantics", draft-ietf-httpbis-p2-semantics-14 (work in
progress), March 2011. progress), April 2011.
[Part4] Fielding, R., Ed., Gettys, J., Mogul, J., Frystyk, H., [Part4] Fielding, R., Ed., Gettys, J., Mogul, J., Frystyk, H.,
Masinter, L., Leach, P., Berners-Lee, T., Lafon, Y., Ed., Masinter, L., Leach, P., Berners-Lee, T., Lafon, Y., Ed.,
and J. Reschke, Ed., "HTTP/1.1, part 4: Conditional and J. Reschke, Ed., "HTTP/1.1, part 4: Conditional
Requests", draft-ietf-httpbis-p4-conditional-13 (work in Requests", draft-ietf-httpbis-p4-conditional-14 (work in
progress), March 2011. progress), April 2011.
[Part5] Fielding, R., Ed., Gettys, J., Mogul, J., Frystyk, H., [Part5] Fielding, R., Ed., Gettys, J., Mogul, J., Frystyk, H.,
Masinter, L., Leach, P., Berners-Lee, T., Lafon, Y., Ed., Masinter, L., Leach, P., Berners-Lee, T., Lafon, Y., Ed.,
and J. Reschke, Ed., "HTTP/1.1, part 5: Range Requests and and J. Reschke, Ed., "HTTP/1.1, part 5: Range Requests and
Partial Responses", draft-ietf-httpbis-p5-range-13 (work Partial Responses", draft-ietf-httpbis-p5-range-14 (work
in progress), March 2011. in progress), April 2011.
[Part7] Fielding, R., Ed., Gettys, J., Mogul, J., Frystyk, H., [Part7] Fielding, R., Ed., Gettys, J., Mogul, J., Frystyk, H.,
Masinter, L., Leach, P., Berners-Lee, T., Lafon, Y., Ed., Masinter, L., Leach, P., Berners-Lee, T., Lafon, Y., Ed.,
and J. Reschke, Ed., "HTTP/1.1, part 7: Authentication", and J. Reschke, Ed., "HTTP/1.1, part 7: Authentication",
draft-ietf-httpbis-p7-auth-13 (work in progress), draft-ietf-httpbis-p7-auth-14 (work in progress),
March 2011. April 2011.
[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 32, line 37 skipping to change at page 32, line 37
Make the specified age calculation algorithm less conservative. Make the specified age calculation algorithm less conservative.
(Section 2.3.2) (Section 2.3.2)
Remove requirement to consider Content-Location in successful Remove requirement to consider Content-Location in successful
responses in order to determine the appropriate response to use. responses in order to determine the appropriate response to use.
(Section 2.4) (Section 2.4)
Clarify denial of service attack avoidance requirement. Clarify denial of service attack avoidance requirement.
(Section 2.5) (Section 2.5)
Change ABNF productions for header fields to only define the field
value. (Section 3)
Do not mention RFC 2047 encoding and multiple languages in Warning Do not mention RFC 2047 encoding and multiple languages in Warning
header fields anymore, as these aspects never were implemented. header fields anymore, as these aspects never were implemented.
(Section 3.6) (Section 3.6)
Appendix B. Collected ABNF Appendix B. Collected ABNF
Age = "Age:" OWS Age-v Age = delta-seconds
Age-v = delta-seconds
Cache-Control = "Cache-Control:" OWS Cache-Control-v Cache-Control = *( "," OWS ) cache-directive *( OWS "," [ OWS
Cache-Control-v = *( "," OWS ) cache-directive *( OWS "," [ OWS
cache-directive ] ) cache-directive ] )
Expires = "Expires:" OWS Expires-v Expires = HTTP-date
Expires-v = HTTP-date
HTTP-date = <HTTP-date, defined in [Part1], Section 6.1> HTTP-date = <HTTP-date, defined in [Part1], Section 6.1>
OWS = <OWS, defined in [Part1], Section 1.2.2> OWS = <OWS, defined in [Part1], Section 1.2.2>
Pragma = "Pragma:" OWS Pragma-v Pragma = *( "," OWS ) pragma-directive *( OWS "," [ OWS
Pragma-v = *( "," OWS ) pragma-directive *( OWS "," [ OWS
pragma-directive ] ) pragma-directive ] )
Vary = "Vary:" OWS Vary-v Vary = "*" / ( *( "," OWS ) field-name *( OWS "," [ OWS field-name ]
Vary-v = "*" / ( *( "," OWS ) field-name *( OWS "," [ OWS field-name ) )
] ) )
Warning = "Warning:" OWS Warning-v Warning = *( "," OWS ) warning-value *( OWS "," [ OWS warning-value ]
Warning-v = *( "," OWS ) warning-value *( OWS "," [ OWS warning-value )
] )
cache-directive = cache-request-directive / cache-response-directive cache-directive = cache-request-directive / cache-response-directive
cache-extension = token [ "=" ( token / quoted-string ) ] cache-extension = token [ "=" ( token / quoted-string ) ]
cache-request-directive = "no-cache" / "no-store" / ( "max-age=" cache-request-directive = "no-cache" / "no-store" / ( "max-age="
delta-seconds ) / ( "max-stale" [ "=" delta-seconds ] ) / ( delta-seconds ) / ( "max-stale" [ "=" delta-seconds ] ) / (
"min-fresh=" delta-seconds ) / "no-transform" / "only-if-cached" / "min-fresh=" delta-seconds ) / "no-transform" / "only-if-cached" /
cache-extension cache-extension
cache-response-directive = "public" / ( "private" [ "=" DQUOTE *( "," cache-response-directive = "public" / ( "private" [ "=" DQUOTE *( ","
OWS ) field-name *( OWS "," [ OWS field-name ] ) DQUOTE ] ) / ( OWS ) field-name *( OWS "," [ OWS field-name ] ) DQUOTE ] ) / (
"no-cache" [ "=" DQUOTE *( "," OWS ) field-name *( OWS "," [ OWS "no-cache" [ "=" DQUOTE *( "," OWS ) field-name *( OWS "," [ OWS
skipping to change at page 38, line 43 skipping to change at page 38, line 40
C.14. Since draft-ietf-httpbis-p6-cache-12 C.14. Since draft-ietf-httpbis-p6-cache-12
Closed issues: Closed issues:
o <http://tools.ietf.org/wg/httpbis/trac/ticket/224>: "Header o <http://tools.ietf.org/wg/httpbis/trac/ticket/224>: "Header
Classification" Classification"
o <http://tools.ietf.org/wg/httpbis/trac/ticket/268>: "Clarify o <http://tools.ietf.org/wg/httpbis/trac/ticket/268>: "Clarify
'public'" '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"
Index Index
A A
age 6 age 6
Age header field 18 Age header field 18
C C
cache 5 cache 5
Cache Directives Cache Directives
max-age 20, 23 max-age 19, 23
max-stale 20 max-stale 20
min-fresh 20 min-fresh 20
must-revalidate 22 must-revalidate 22
no-cache 19, 21 no-cache 19, 21
no-store 19, 22 no-store 19, 22
no-transform 20, 23 no-transform 20, 23
only-if-cached 20 only-if-cached 20
private 21 private 21
proxy-revalidate 23 proxy-revalidate 23
public 21 public 21
skipping to change at page 39, line 30 skipping to change at page 39, line 35
explicit expiration time 6 explicit expiration time 6
F F
first-hand 6 first-hand 6
fresh 6 fresh 6
freshness lifetime 6 freshness lifetime 6
G G
Grammar Grammar
Age 18 Age 18
Age-v 18
Cache-Control 19 Cache-Control 19
Cache-Control-v 19
cache-extension 19 cache-extension 19
cache-request-directive 19 cache-request-directive 19
cache-response-directive 21 cache-response-directive 21
delta-seconds 18 delta-seconds 18
Expires 25 Expires 25
Expires-v 25
extension-pragma 25 extension-pragma 25
Pragma 25 Pragma 25
pragma-directive 25 pragma-directive 25
Pragma-v 25
Vary 26 Vary 26
Vary-v 26
warn-agent 27 warn-agent 27
warn-code 27 warn-code 27
warn-date 27 warn-date 27
warn-text 27 warn-text 27
Warning 27 Warning 27
Warning-v 27
warning-value 27 warning-value 27
H H
Header Fields Header Fields
Age 18 Age 18
Cache-Control 18 Cache-Control 18
Expires 24 Expires 24
Pragma 25 Pragma 25
Vary 26 Vary 26
Warning 26 Warning 26
heuristic expiration time 6 heuristic expiration time 6
M M
max-age max-age
Cache Directive 20, 23 Cache Directive 19, 23
max-stale max-stale
Cache Directive 20 Cache Directive 20
min-fresh min-fresh
Cache Directive 20 Cache Directive 20
must-revalidate must-revalidate
Cache Directive 22 Cache Directive 22
N N
no-cache no-cache
Cache Directive 19, 21 Cache Directive 19, 21
 End of changes. 40 change blocks. 
60 lines changed or deleted 57 lines changed or added

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