draft-ietf-httpbis-p6-cache-04.txt | draft-ietf-httpbis-p6-cache-05.txt | |||
---|---|---|---|---|
Network Working Group R. Fielding, Ed. | Network Working Group R. Fielding, Ed. | |||
Internet-Draft Day Software | Internet-Draft Day Software | |||
Obsoletes: 2616 (if approved) J. Gettys | Obsoletes: 2616 (if approved) J. Gettys | |||
Intended status: Standards Track One Laptop per Child | Intended status: Standards Track One Laptop per Child | |||
Expires: March 2, 2009 J. Mogul | Expires: May 20, 2009 J. Mogul | |||
HP | HP | |||
H. Frystyk | H. Frystyk | |||
Microsoft | Microsoft | |||
L. Masinter | L. Masinter | |||
Adobe Systems | Adobe Systems | |||
P. Leach | P. Leach | |||
Microsoft | Microsoft | |||
T. Berners-Lee | T. Berners-Lee | |||
W3C/MIT | W3C/MIT | |||
Y. Lafon, Ed. | Y. Lafon, Ed. | |||
W3C | W3C | |||
J. Reschke, Ed. | J. Reschke, Ed. | |||
greenbytes | greenbytes | |||
August 29, 2008 | November 16, 2008 | |||
HTTP/1.1, part 6: Caching | HTTP/1.1, part 6: Caching | |||
draft-ietf-httpbis-p6-cache-04 | draft-ietf-httpbis-p6-cache-05 | |||
Status of this Memo | Status of this Memo | |||
By submitting this Internet-Draft, each author represents that any | By submitting this Internet-Draft, each author represents that any | |||
applicable patent or other IPR claims of which he or she is aware | applicable patent or other IPR claims of which he or she is aware | |||
have been or will be disclosed, and any of which he or she becomes | have been or will be disclosed, and any of which he or she becomes | |||
aware will be disclosed, in accordance with Section 6 of BCP 79. | aware will be disclosed, in accordance with Section 6 of BCP 79. | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF), its areas, and its working groups. Note that | Task Force (IETF), its areas, and its working groups. Note that | |||
skipping to change at page 1, line 49 | skipping to change at page 1, line 49 | |||
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." | |||
The list of current Internet-Drafts can be accessed at | The list of current Internet-Drafts can be accessed at | |||
http://www.ietf.org/ietf/1id-abstracts.txt. | http://www.ietf.org/ietf/1id-abstracts.txt. | |||
The list of Internet-Draft Shadow Directories can be accessed at | The list of Internet-Draft Shadow Directories can be accessed at | |||
http://www.ietf.org/shadow.html. | http://www.ietf.org/shadow.html. | |||
This Internet-Draft will expire on March 2, 2009. | This Internet-Draft will expire on May 20, 2009. | |||
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. 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. Part 6 defines | "HTTP/1.1" and, taken together, obsoletes RFC 2616. Part 6 defines | |||
requirements on HTTP caches and the associated header fields that | requirements on HTTP caches and the associated header fields that | |||
control cache behavior or indicate cacheable response messages. | control cache behavior 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). The current issues list is | |||
at <http://www.tools.ietf.org/wg/httpbis/trac/report/11> and related | at <http://tools.ietf.org/wg/httpbis/trac/report/11> and related | |||
documents (including fancy diffs) can be found at | documents (including fancy diffs) can be found at | |||
<http://www.tools.ietf.org/wg/httpbis/>. | <http://tools.ietf.org/wg/httpbis/>. | |||
The changes in this draft are summarized in Appendix B.4. | The changes in this draft are summarized in Appendix B.6. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 5 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
1.1. Purpose . . . . . . . . . . . . . . . . . . . . . . . . . 5 | 1.1. Purpose . . . . . . . . . . . . . . . . . . . . . . . . . 5 | |||
1.2. Terminology . . . . . . . . . . . . . . . . . . . . . . . 6 | 1.2. Terminology . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
1.3. Requirements . . . . . . . . . . . . . . . . . . . . . . . 7 | 1.3. Requirements . . . . . . . . . . . . . . . . . . . . . . . 7 | |||
2. Notational Conventions and Generic Grammar . . . . . . . . . . 8 | 2. Notational Conventions and Generic Grammar . . . . . . . . . . 8 | |||
3. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 | 3. Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
3.1. Cache Correctness . . . . . . . . . . . . . . . . . . . . 8 | 3.1. Cache Correctness . . . . . . . . . . . . . . . . . . . . 8 | |||
skipping to change at page 4, line 21 | skipping to change at page 4, line 21 | |||
Appendix A. Compatibility with Previous Versions . . . . . . . . 44 | Appendix A. Compatibility with Previous Versions . . . . . . . . 44 | |||
A.1. Changes from RFC 2068 . . . . . . . . . . . . . . . . . . 44 | A.1. Changes from RFC 2068 . . . . . . . . . . . . . . . . . . 44 | |||
A.2. Changes from RFC 2616 . . . . . . . . . . . . . . . . . . 45 | A.2. Changes from RFC 2616 . . . . . . . . . . . . . . . . . . 45 | |||
Appendix B. Change Log (to be removed by RFC Editor before | Appendix B. Change Log (to be removed by RFC Editor before | |||
publication) . . . . . . . . . . . . . . . . . . . . 45 | publication) . . . . . . . . . . . . . . . . . . . . 45 | |||
B.1. Since RFC2616 . . . . . . . . . . . . . . . . . . . . . . 45 | B.1. Since RFC2616 . . . . . . . . . . . . . . . . . . . . . . 45 | |||
B.2. Since draft-ietf-httpbis-p6-cache-00 . . . . . . . . . . . 45 | B.2. Since draft-ietf-httpbis-p6-cache-00 . . . . . . . . . . . 45 | |||
B.3. Since draft-ietf-httpbis-p6-cache-01 . . . . . . . . . . . 46 | B.3. Since draft-ietf-httpbis-p6-cache-01 . . . . . . . . . . . 46 | |||
B.4. Since draft-ietf-httpbis-p6-cache-02 . . . . . . . . . . . 46 | B.4. Since draft-ietf-httpbis-p6-cache-02 . . . . . . . . . . . 46 | |||
B.5. Since draft-ietf-httpbis-p6-cache-03 . . . . . . . . . . . 46 | B.5. Since draft-ietf-httpbis-p6-cache-03 . . . . . . . . . . . 46 | |||
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 | B.6. Since draft-ietf-httpbis-p6-cache-04 . . . . . . . . . . . 47 | |||
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 | ||||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 49 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 49 | |||
Intellectual Property and Copyright Statements . . . . . . . . . . 52 | Intellectual Property and Copyright Statements . . . . . . . . . . 52 | |||
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, and | performance can be improved by the use of response caches, and | |||
includes a number of elements intended to make caching work as well | includes a number of elements intended to make caching work as well | |||
as possible. Because these elements interact with each other, it is | as possible. Because these elements interact with each other, it is | |||
useful to describe the caching design of HTTP separately. This | useful to describe the caching design of HTTP separately. This | |||
skipping to change at page 8, line 10 | skipping to change at page 8, line 10 | |||
REQUIRED level and all the SHOULD level requirements for its | REQUIRED level and all the SHOULD level requirements for its | |||
protocols is said to be "unconditionally compliant"; one that | protocols is said to be "unconditionally compliant"; one that | |||
satisfies all the MUST level requirements but not all the SHOULD | satisfies all the MUST level requirements but not all the SHOULD | |||
level requirements for its protocols is said to be "conditionally | level requirements for its protocols is said to be "conditionally | |||
compliant." | compliant." | |||
2. Notational Conventions and Generic Grammar | 2. Notational Conventions and Generic Grammar | |||
This specification uses the ABNF syntax defined in Section 2.1 of | This specification uses the ABNF syntax defined in Section 2.1 of | |||
[Part1] and the core rules defined in Section 2.2 of [Part1]: | [Part1] and the core rules defined in Section 2.2 of [Part1]: | |||
[[abnf.dep: ABNF syntax and basic rules will be adopted from RFC | ||||
5234, see <http://tools.ietf.org/wg/httpbis/trac/ticket/36>.]] | ||||
DIGIT = <DIGIT, defined in [Part1], Section 2.2> | DIGIT = <DIGIT, defined in [Part1], Section 2.2> | |||
DQUOTE = <DQUOTE, defined in [Part1], Section 2.2> | DQUOTE = <DQUOTE, defined in [Part1], Section 2.2> | |||
SP = <SP, defined in [Part1], Section 2.2> | SP = <SP, defined in [Part1], Section 2.2> | |||
quoted-string = <quoted-string, defined in [Part1], Section 2.2> | quoted-string = <quoted-string, defined in [Part1], Section 2.2> | |||
token = <token, defined in [Part1], Section 2.2> | token = <token, defined in [Part1], Section 2.2> | |||
OWS = <OWS, defined in [Part1], Section 2.2> | ||||
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 4.2> | field-name = <field-name, defined in [Part1], Section 4.2> | |||
HTTP-date = <HTTP-date, defined in [Part1], Section 3.3.1> | HTTP-date = <HTTP-date, defined in [Part1], Section 3.3.1> | |||
port = <port, defined in [Part1], Section 3.2.1> | port = <port, defined in [Part1], Section 3.2> | |||
pseudonym = <pseudonym, defined in [Part1], Section 8.9> | pseudonym = <pseudonym, defined in [Part1], Section 8.9> | |||
uri-host = <uri-host, defined in [Part1], Section 3.2.1> | uri-host = <uri-host, defined in [Part1], Section 3.2> | |||
3. Overview | 3. Overview | |||
3.1. Cache Correctness | 3.1. Cache Correctness | |||
A correct cache MUST respond to a request with the most up-to-date | A correct cache MUST respond to a request with the most up-to-date | |||
response held by the cache that is appropriate to the request (see | response held by the cache that is appropriate to the request (see | |||
Sections 4.5, 4.6, and 14) which meets one of the following | Sections 4.5, 4.6, and 14) which meets one of the following | |||
conditions: | conditions: | |||
skipping to change at page 27, line 16 | skipping to change at page 27, line 16 | |||
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. | |||
For entity-header fields, both sender and recipient refer to either | For entity-header fields, both sender and recipient refer to either | |||
the client or the server, depending on who sends and who receives the | the client or the server, depending on who sends and who receives the | |||
entity. | entity. | |||
16.1. Age | 16.1. Age | |||
The Age response-header field conveys the sender's estimate of the | The response-header field "Age" conveys the sender's estimate of the | |||
amount of time since the response (or its revalidation) was generated | amount of time since the response (or its revalidation) was generated | |||
at the origin server. A cached response is "fresh" if its age does | at the origin server. A cached response is "fresh" if its age does | |||
not exceed its freshness lifetime. Age values are calculated as | not exceed its freshness lifetime. Age values are calculated as | |||
specified in Section 4.3. | specified in Section 4.3. | |||
Age = "Age" ":" age-value | Age = "Age" ":" OWS Age-v | |||
age-value = delta-seconds | Age-v = delta-seconds | |||
Age values are non-negative decimal integers, representing time in | Age values are non-negative decimal 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 with a value of 2147483648 (2^31). An | MUST transmit an Age header with a value of 2147483648 (2^31). An | |||
HTTP/1.1 server that includes a cache MUST include an Age header | HTTP/1.1 server that includes a cache MUST include an Age header | |||
field in every response generated from its own cache. Caches SHOULD | field in every response generated from its own cache. Caches SHOULD | |||
use an arithmetic type of at least 31 bits of range. | use an arithmetic type of at least 31 bits of range. | |||
16.2. Cache-Control | 16.2. Cache-Control | |||
The Cache-Control general-header field is used to specify directives | The general-header field "Cache-Control" is used to specify | |||
that MUST be obeyed by all caching mechanisms along the request/ | directives that MUST be obeyed by all caching mechanisms along the | |||
response chain. The directives specify behavior intended to prevent | request/response chain. The directives specify behavior intended to | |||
caches from adversely interfering with the request or response. | prevent caches from adversely interfering with the request or | |||
These directives typically override the default caching algorithms. | response. These directives typically override the default caching | |||
Cache directives are unidirectional in that the presence of a | algorithms. Cache directives are unidirectional in that the presence | |||
directive in a request does not imply that the same directive is to | of a directive in a request does not imply that the same directive is | |||
be given in the response. | to be given in the response. | |||
Note that HTTP/1.0 caches might not implement Cache-Control and | Note that HTTP/1.0 caches might not implement Cache-Control and | |||
might only implement Pragma: no-cache (see Section 16.4). | might only implement Pragma: no-cache (see Section 16.4). | |||
Cache directives MUST be passed through by a proxy or gateway | Cache directives MUST be passed through by a proxy or gateway | |||
application, regardless of their significance to that application, | application, regardless of their significance to that application, | |||
since the directives might be applicable to all recipients along the | since the directives might be applicable to all recipients along the | |||
request/response chain. It is not possible to specify a cache- | request/response chain. It is not possible to specify a cache- | |||
directive for a specific cache. | directive for a specific cache. | |||
Cache-Control = "Cache-Control" ":" 1#cache-directive | Cache-Control = "Cache-Control" ":" OWS Cache-Control-v | |||
Cache-Control-v = 1#cache-directive | ||||
cache-directive = cache-request-directive | cache-directive = cache-request-directive | |||
| cache-response-directive | / cache-response-directive | |||
cache-request-directive = | cache-request-directive = | |||
"no-cache" ; Section 16.2.1 | "no-cache" ; Section 16.2.1 | |||
| "no-store" ; Section 16.2.2 | / "no-store" ; Section 16.2.2 | |||
| "max-age" "=" delta-seconds ; Section 16.2.3, 16.2.4 | / "max-age" "=" delta-seconds ; Section 16.2.3, 16.2.4 | |||
| "max-stale" [ "=" delta-seconds ] ; Section 16.2.3 | / "max-stale" [ "=" delta-seconds ] ; Section 16.2.3 | |||
| "min-fresh" "=" delta-seconds ; Section 16.2.3 | / "min-fresh" "=" delta-seconds ; Section 16.2.3 | |||
| "no-transform" ; Section 16.2.5 | / "no-transform" ; Section 16.2.5 | |||
| "only-if-cached" ; Section 16.2.4 | / "only-if-cached" ; Section 16.2.4 | |||
| cache-extension ; Section 16.2.6 | / cache-extension ; Section 16.2.6 | |||
cache-response-directive = | cache-response-directive = | |||
"public" ; Section 16.2.1 | "public" ; Section 16.2.1 | |||
| "private" [ "=" DQUOTE 1#field-name DQUOTE ] ; Section 16.2.1 | / "private" [ "=" DQUOTE 1#field-name DQUOTE ] ; Section 16.2.1 | |||
| "no-cache" [ "=" DQUOTE 1#field-name DQUOTE ] ; Section 16.2.1 | / "no-cache" [ "=" DQUOTE 1#field-name DQUOTE ] ; Section 16.2.1 | |||
| "no-store" ; Section 16.2.2 | / "no-store" ; Section 16.2.2 | |||
| "no-transform" ; Section 16.2.5 | / "no-transform" ; Section 16.2.5 | |||
| "must-revalidate" ; Section 16.2.4 | / "must-revalidate" ; Section 16.2.4 | |||
| "proxy-revalidate" ; Section 16.2.4 | / "proxy-revalidate" ; Section 16.2.4 | |||
| "max-age" "=" delta-seconds ; Section 16.2.3 | / "max-age" "=" delta-seconds ; Section 16.2.3 | |||
| "s-maxage" "=" delta-seconds ; Section 16.2.3 | / "s-maxage" "=" delta-seconds ; Section 16.2.3 | |||
| cache-extension ; Section 16.2.6 | / cache-extension ; Section 16.2.6 | |||
cache-extension = token [ "=" ( token | quoted-string ) ] | cache-extension = token [ "=" ( token / quoted-string ) ] | |||
When a directive appears without any 1#field-name parameter, the | When a directive appears without any 1#field-name parameter, the | |||
directive applies to the entire request or response. When such a | directive applies to the entire request or response. When such a | |||
directive appears with a 1#field-name parameter, it applies only to | directive appears with a 1#field-name parameter, it applies only to | |||
the named field or fields, and not to the rest of the request or | the named field or fields, and not to the rest of the request or | |||
response. This mechanism supports extensibility; implementations of | response. This mechanism supports extensibility; implementations of | |||
future versions of HTTP might apply these directives to header fields | future versions of HTTP might apply these directives to header fields | |||
not defined in HTTP/1.1. | not defined in HTTP/1.1. | |||
The cache-control directives can be broken down into these general | The cache-control directives can be broken down into these general | |||
skipping to change at page 37, line 24 | skipping to change at page 37, line 24 | |||
intermediate cache that has a fresh copy of the entity). See | intermediate cache that has a fresh copy of the entity). See | |||
Section 4 for further discussion of the expiration model. | Section 4 for further discussion of the expiration 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 format is an absolute date and time as defined by HTTP-date in | The format is an absolute date and time as defined by HTTP-date in | |||
Section 3.3.1 of [Part1]; it MUST be sent in rfc1123-date format. | Section 3.3.1 of [Part1]; it MUST be sent in rfc1123-date format. | |||
Expires = "Expires" ":" HTTP-date | Expires = "Expires" ":" OWS Expires-v | |||
Expires-v = HTTP-date | ||||
An example of its use is | An example of its use is | |||
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 16.2.3), that directive overrides the | age directive (see Section 16.2.3), that directive overrides the | |||
Expires field. | Expires field. | |||
HTTP/1.1 clients and caches MUST treat other invalid date formats, | HTTP/1.1 clients and caches MUST treat other invalid date formats, | |||
skipping to change at page 38, line 7 | skipping to change at page 38, line 7 | |||
sent. HTTP/1.1 servers SHOULD NOT send Expires dates more than one | sent. HTTP/1.1 servers SHOULD NOT send Expires dates more than one | |||
year in the future. | year in the future. | |||
The presence of an Expires header field with a date value of some | The presence of an Expires header field with a date value of some | |||
time in the future on a response that otherwise would by default be | time in the future on a response that otherwise would by default be | |||
non-cacheable indicates that the response is cacheable, unless | non-cacheable indicates that the response is cacheable, unless | |||
indicated otherwise by a Cache-Control header field (Section 16.2). | indicated otherwise by a Cache-Control header field (Section 16.2). | |||
16.4. Pragma | 16.4. Pragma | |||
The Pragma general-header field is used to include implementation- | The general-header field "Pragma" is used to include implementation- | |||
specific directives that might apply to any recipient along the | specific directives that might apply to any recipient along the | |||
request/response chain. All pragma directives specify optional | request/response chain. All pragma directives specify optional | |||
behavior from the viewpoint of the protocol; however, some systems | behavior from the viewpoint of the protocol; however, some systems | |||
MAY require that behavior be consistent with the directives. | MAY require that behavior be consistent with the directives. | |||
Pragma = "Pragma" ":" 1#pragma-directive | Pragma = "Pragma" ":" OWS Pragma-v | |||
pragma-directive = "no-cache" | extension-pragma | Pragma-v = 1#pragma-directive | |||
extension-pragma = token [ "=" ( token | quoted-string ) ] | pragma-directive = "no-cache" / extension-pragma | |||
extension-pragma = token [ "=" ( token / quoted-string ) ] | ||||
When the no-cache directive is present in a request message, an | When the no-cache directive is present in a request message, an | |||
application SHOULD forward the request toward the origin server even | application SHOULD forward the request toward the origin server even | |||
if it has a cached copy of what is being requested. This pragma | if it has a cached copy of what is being requested. This pragma | |||
directive has the same semantics as the no-cache cache-directive (see | directive has the same semantics as the no-cache cache-directive (see | |||
Section 16.2) and is defined here for backward compatibility with | Section 16.2) and is defined here for backward compatibility with | |||
HTTP/1.0. Clients SHOULD include both header fields when a no-cache | HTTP/1.0. Clients SHOULD include both header fields when a no-cache | |||
request is sent to a server not known to be HTTP/1.1 compliant. | request is sent to a server not known to be HTTP/1.1 compliant. | |||
Pragma directives MUST be passed through by a proxy or gateway | Pragma directives MUST be passed through by a proxy or gateway | |||
skipping to change at page 38, line 42 | skipping to change at page 38, line 43 | |||
HTTP/1.1 caches SHOULD treat "Pragma: no-cache" as if the client had | HTTP/1.1 caches SHOULD treat "Pragma: no-cache" as if the client had | |||
sent "Cache-Control: no-cache". No new Pragma directives will be | sent "Cache-Control: no-cache". No new Pragma directives will be | |||
defined in HTTP. | defined in HTTP. | |||
Note: because the meaning of "Pragma: no-cache" as a response- | Note: because the meaning of "Pragma: no-cache" as a response- | |||
header field is not actually specified, it does not provide a | header field is not actually specified, it does not provide a | |||
reliable replacement for "Cache-Control: no-cache" in a response. | reliable replacement for "Cache-Control: no-cache" in a response. | |||
16.5. Vary | 16.5. Vary | |||
The Vary response-header field's value indicates the set of request- | The "Vary" response-header field's value indicates the set of | |||
header fields that fully determines, while the response is fresh, | request-header fields that fully determines, while the response is | |||
whether a cache is permitted to use the response to reply to a | fresh, whether a cache is permitted to use the response to reply to a | |||
subsequent request without revalidation. For uncacheable or stale | subsequent request without revalidation. For uncacheable or stale | |||
responses, the Vary field value advises the user agent about the | responses, the Vary field value advises the user agent about the | |||
criteria that were used to select the representation. A Vary field | criteria that were used to select the representation. A Vary field | |||
value of "*" implies that a cache cannot determine from the request | value of "*" implies that a cache cannot determine from the request | |||
headers of a subsequent request whether this response is the | headers of a subsequent request whether this response is the | |||
appropriate representation. See Section 8 for use of the Vary header | appropriate representation. See Section 8 for use of the Vary header | |||
field by caches. | field by caches. | |||
Vary = "Vary" ":" ( "*" | 1#field-name ) | Vary = "Vary" ":" OWS Vary-v | |||
Vary-v = "*" / 1#field-name | ||||
An HTTP/1.1 server SHOULD include a Vary header field with any | An HTTP/1.1 server SHOULD include a Vary header field with any | |||
cacheable response that is subject to server-driven negotiation. | cacheable response that is subject to server-driven negotiation. | |||
Doing so allows a cache to properly interpret future requests on that | Doing so allows a cache to properly interpret future requests on that | |||
resource and informs the user agent about the presence of negotiation | resource and informs the user agent about the presence of negotiation | |||
on that resource. A server MAY include a Vary header field with a | on that resource. A server MAY include a Vary header field with a | |||
non-cacheable response that is subject to server-driven negotiation, | non-cacheable response that is subject to server-driven negotiation, | |||
since this might provide the user agent with useful information about | since this might provide the user agent with useful information about | |||
the dimensions over which the response varies at the time of the | the dimensions over which the response varies at the time of the | |||
response. | response. | |||
skipping to change at page 39, line 37 | skipping to change at page 39, line 38 | |||
insensitive. | insensitive. | |||
A Vary field value of "*" signals that unspecified parameters not | A Vary field value of "*" signals that unspecified parameters not | |||
limited to the request-headers (e.g., the network address of the | limited to the request-headers (e.g., the network address of the | |||
client), play a role in the selection of the response representation. | client), play a role in the selection of the response representation. | |||
The "*" value MUST NOT be generated by a proxy server; it may only be | The "*" value MUST NOT be generated by a proxy server; it may only be | |||
generated by an origin server. | generated by an origin server. | |||
16.6. Warning | 16.6. Warning | |||
The Warning general-header field is used to carry additional | The general-header field "Warning" is used to carry additional | |||
information about the status or transformation of a message which | information about the status or transformation of a message which | |||
might not be reflected in the message. This information is typically | might not be reflected in the message. This information is typically | |||
used to warn about a possible lack of semantic transparency from | used to warn about a possible lack of semantic transparency from | |||
caching operations or transformations applied to the entity body of | caching operations or transformations applied to the entity body of | |||
the message. | the message. | |||
Warning headers are sent with responses using: | Warning headers are sent with responses using: | |||
Warning = "Warning" ":" 1#warning-value | Warning = "Warning" ":" OWS Warning-v | |||
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, for use in debugging | ; the Warning header, for use in debugging | |||
warn-text = quoted-string | warn-text = quoted-string | |||
warn-date = DQUOTE HTTP-date DQUOTE | warn-date = DQUOTE HTTP-date DQUOTE | |||
A response MAY carry more than one Warning header. | A response MAY carry more than one Warning header. | |||
The warn-text SHOULD be in a natural language and character set that | The warn-text SHOULD be in a natural language and character set that | |||
is most likely to be intelligible to the human user receiving the | is most likely to be intelligible to the human user receiving the | |||
response. This decision MAY be based on any available knowledge, | response. This decision MAY be based on any available knowledge, | |||
skipping to change at page 43, line 27 | skipping to change at page 43, line 29 | |||
[ISO-8859-1] | [ISO-8859-1] | |||
International Organization for Standardization, | International Organization for Standardization, | |||
"Information technology -- 8-bit single-byte coded graphic | "Information technology -- 8-bit single-byte coded graphic | |||
character sets -- Part 1: Latin alphabet No. 1", ISO/ | character sets -- Part 1: Latin alphabet No. 1", ISO/ | |||
IEC 8859-1:1998, 1998. | IEC 8859-1:1998, 1998. | |||
[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-04 | and Message Parsing", draft-ietf-httpbis-p1-messaging-05 | |||
(work in progress), August 2008. | (work in progress), November 2008. | |||
[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-04 (work in | Semantics", draft-ietf-httpbis-p2-semantics-05 (work in | |||
progress), August 2008. | progress), November 2008. | |||
[Part3] Fielding, R., Ed., Gettys, J., Mogul, J., Frystyk, H., | [Part3] 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 3: Message Payload | and J. Reschke, Ed., "HTTP/1.1, part 3: Message Payload | |||
and Content Negotiation", draft-ietf-httpbis-p3-payload-04 | and Content Negotiation", draft-ietf-httpbis-p3-payload-05 | |||
(work in progress), August 2008. | (work in progress), November 2008. | |||
[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-04 (work in | Requests", draft-ietf-httpbis-p4-conditional-05 (work in | |||
progress), August 2008. | progress), November 2008. | |||
[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-04 (work | Partial Responses", draft-ietf-httpbis-p5-range-05 (work | |||
in progress), August 2008. | in progress), November 2008. | |||
[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-04 (work in progress), | draft-ietf-httpbis-p7-auth-05 (work in progress), | |||
August 2008. | November 2008. | |||
[RFC2047] Moore, K., "MIME (Multipurpose Internet Mail Extensions) | [RFC2047] Moore, K., "MIME (Multipurpose Internet Mail Extensions) | |||
Part Three: Message Header Extensions for Non-ASCII Text", | Part Three: Message Header Extensions for Non-ASCII Text", | |||
RFC 2047, November 1996. | RFC 2047, November 1996. | |||
[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. | |||
20.2. Informative References | 20.2. Informative References | |||
skipping to change at page 45, line 30 | skipping to change at page 45, line 31 | |||
Appendix B. Change Log (to be removed by RFC Editor before publication) | Appendix B. Change Log (to be removed by RFC Editor before publication) | |||
B.1. Since RFC2616 | B.1. Since RFC2616 | |||
Extracted relevant partitions from [RFC2616]. | Extracted relevant partitions from [RFC2616]. | |||
B.2. Since draft-ietf-httpbis-p6-cache-00 | B.2. Since draft-ietf-httpbis-p6-cache-00 | |||
Closed issues: | Closed issues: | |||
o <http://www3.tools.ietf.org/wg/httpbis/trac/ticket/9>: "Trailer" | o <http://tools.ietf.org/wg/httpbis/trac/ticket/9>: "Trailer" | |||
(<http://purl.org/NET/http-errata#trailer-hop>) | (<http://purl.org/NET/http-errata#trailer-hop>) | |||
o <http://www3.tools.ietf.org/wg/httpbis/trac/ticket/12>: | o <http://tools.ietf.org/wg/httpbis/trac/ticket/12>: "Invalidation | |||
"Invalidation after Update or Delete" | after Update or Delete" | |||
(<http://purl.org/NET/http-errata#invalidupd>) | (<http://purl.org/NET/http-errata#invalidupd>) | |||
o <http://www3.tools.ietf.org/wg/httpbis/trac/ticket/35>: "Normative | o <http://tools.ietf.org/wg/httpbis/trac/ticket/35>: "Normative and | |||
and Informative references" | Informative references" | |||
o <http://www3.tools.ietf.org/wg/httpbis/trac/ticket/48>: "Date | o <http://tools.ietf.org/wg/httpbis/trac/ticket/48>: "Date reference | |||
reference typo" | typo" | |||
o <http://www3.tools.ietf.org/wg/httpbis/trac/ticket/49>: | o <http://tools.ietf.org/wg/httpbis/trac/ticket/49>: "Connection | |||
"Connection header text" | header text" | |||
o <http://www3.tools.ietf.org/wg/httpbis/trac/ticket/65>: | o <http://tools.ietf.org/wg/httpbis/trac/ticket/65>: "Informative | |||
"Informative references" | references" | |||
o <http://tools.ietf.org/wg/httpbis/trac/ticket/66>: "ISO-8859-1 | ||||
Reference" | ||||
o <http://www3.tools.ietf.org/wg/httpbis/trac/ticket/66>: | o <http://tools.ietf.org/wg/httpbis/trac/ticket/86>: "Normative up- | |||
"ISO-8859-1 Reference" | to-date references" | |||
o <http://www3.tools.ietf.org/wg/httpbis/trac/ticket/86>: "Normative | ||||
up-to-date references" | ||||
o <http://www3.tools.ietf.org/wg/httpbis/trac/ticket/87>: "typo in | o <http://tools.ietf.org/wg/httpbis/trac/ticket/87>: "typo in | |||
13.2.2" | 13.2.2" | |||
Other changes: | Other changes: | |||
o Use names of RFC4234 core rules DQUOTE and HTAB (work in progress | o Use names of RFC4234 core rules DQUOTE and HTAB (work in progress | |||
on <http://www3.tools.ietf.org/wg/httpbis/trac/ticket/36>) | on <http://tools.ietf.org/wg/httpbis/trac/ticket/36>) | |||
B.3. Since draft-ietf-httpbis-p6-cache-01 | B.3. Since draft-ietf-httpbis-p6-cache-01 | |||
Closed issues: | Closed issues: | |||
o <http://www3.tools.ietf.org/wg/httpbis/trac/ticket/82>: "rel_path | o <http://tools.ietf.org/wg/httpbis/trac/ticket/82>: "rel_path not | |||
not used" | used" | |||
Other changes: | Other changes: | |||
o Get rid of duplicate BNF rule names ("host" -> "uri-host") (work | o Get rid of duplicate BNF rule names ("host" -> "uri-host") (work | |||
in progress on | in progress on <http://tools.ietf.org/wg/httpbis/trac/ticket/36>) | |||
<http://www3.tools.ietf.org/wg/httpbis/trac/ticket/36>) | ||||
o Add explicit references to BNF syntax and rules imported from | o Add explicit references to BNF syntax and rules imported from | |||
other parts of the specification. | other parts of the specification. | |||
B.4. Since draft-ietf-httpbis-p6-cache-02 | B.4. Since draft-ietf-httpbis-p6-cache-02 | |||
Ongoing work on IANA Message Header Registration | Ongoing work on IANA Message Header Registration | |||
(<http://www3.tools.ietf.org/wg/httpbis/trac/ticket/40>): | (<http://tools.ietf.org/wg/httpbis/trac/ticket/40>): | |||
o Reference RFC 3984, and update header registrations for headers | o Reference RFC 3984, and update header registrations for headers | |||
defined in this document. | defined in this document. | |||
B.5. Since draft-ietf-httpbis-p6-cache-03 | B.5. Since draft-ietf-httpbis-p6-cache-03 | |||
Closed issues: | Closed issues: | |||
o <http://www3.tools.ietf.org/wg/httpbis/trac/ticket/106>: "Vary | o <http://tools.ietf.org/wg/httpbis/trac/ticket/106>: "Vary header | |||
header classification" | classification" | |||
B.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 | ||||
value format definitions. | ||||
Index | Index | |||
A | A | |||
age 7 | age 7 | |||
Age header 27 | Age header 27 | |||
C | C | |||
cache 5 | cache 5 | |||
Cache Directives | Cache Directives | |||
max-age 32-33 | max-age 32-33 | |||
max-stale 32 | max-stale 32 | |||
min-fresh 32 | min-fresh 32 | |||
must-revalidate 34 | must-revalidate 34 | |||
no-cache 29 | no-cache 29 | |||
no-store 30 | no-store 30 | |||
no-transform 35 | no-transform 35 | |||
skipping to change at page 47, line 34 | skipping to change at page 48, line 6 | |||
explicit expiration time 7 | explicit expiration time 7 | |||
F | F | |||
first-hand 6 | first-hand 6 | |||
fresh 7 | fresh 7 | |||
freshness lifetime 7 | freshness lifetime 7 | |||
G | G | |||
Grammar | Grammar | |||
Age 27 | Age 27 | |||
age-value 27 | Age-v 27 | |||
Cache-Control 28 | Cache-Control 28 | |||
Cache-Control-v 28 | ||||
cache-directive 28 | cache-directive 28 | |||
cache-extension 28 | cache-extension 28 | |||
cache-request-directive 28 | cache-request-directive 28 | |||
cache-response-directive 28 | cache-response-directive 28 | |||
delta-seconds 27 | delta-seconds 27 | |||
Expires 37 | Expires 37 | |||
Expires-v 37 | ||||
extension-pragma 38 | extension-pragma 38 | |||
Pragma 38 | Pragma 38 | |||
pragma-directive 38 | pragma-directive 38 | |||
Vary 38 | Pragma-v 38 | |||
Vary 39 | ||||
Vary-v 39 | ||||
warn-agent 40 | warn-agent 40 | |||
warn-code 40 | warn-code 40 | |||
warn-date 40 | warn-date 40 | |||
warn-text 40 | warn-text 40 | |||
Warning 40 | Warning 40 | |||
Warning-v 40 | ||||
warning-value 40 | warning-value 40 | |||
H | H | |||
Headers | Headers | |||
Age 27 | Age 27 | |||
Cache-Control 27 | Cache-Control 27 | |||
Expires 37 | Expires 37 | |||
Pragma 38 | Pragma 38 | |||
Vary 38 | Vary 38 | |||
Warning 39 | Warning 39 | |||
heuristic expiration time 7 | heuristic expiration time 7 | |||
End of changes. 54 change blocks. | ||||
92 lines changed or deleted | 116 lines changed or added | |||
This html diff was produced by rfcdiff 1.34. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |