Changeset 1419 for draft-ietf-httpbis/latest
- Timestamp:
- 30/08/11 01:05:39 (9 years ago)
- Location:
- draft-ietf-httpbis/latest
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
draft-ietf-httpbis/latest/p6-cache.html
r1416 r1419 362 362 } 363 363 @bottom-center { 364 content: "Expires February 27, 2012";364 content: "Expires March 2, 2012"; 365 365 } 366 366 @bottom-right { … … 408 408 <meta name="dct.creator" content="Reschke, J. F."> 409 409 <meta name="dct.identifier" content="urn:ietf:id:draft-ietf-httpbis-p6-cache-latest"> 410 <meta name="dct.issued" scheme="ISO8601" content="2011-08- 26">410 <meta name="dct.issued" scheme="ISO8601" content="2011-08-30"> 411 411 <meta name="dct.replaces" content="urn:ietf:rfc:2616"> 412 412 <meta name="dct.abstract" content="The Hypertext Transfer Protocol (HTTP) is an application-level protocol for distributed, collaborative, hypertext information systems. HTTP has been in use by the World Wide Web global information initiative since 1990. This document is Part 6 of the seven-part specification that defines the protocol referred to as "HTTP/1.1" and, taken together, obsoletes RFC 2616. Part 6 defines requirements on HTTP caches and the associated header fields that control cache behavior or indicate cacheable response messages."> … … 434 434 </tr> 435 435 <tr> 436 <td class="left">Expires: February 27, 2012</td>436 <td class="left">Expires: March 2, 2012</td> 437 437 <td class="right">J. Mogul</td> 438 438 </tr> … … 495 495 <tr> 496 496 <td class="left"></td> 497 <td class="right">August 26, 2011</td>497 <td class="right">August 30, 2011</td> 498 498 </tr> 499 499 </tbody> … … 525 525 in progress”. 526 526 </p> 527 <p>This Internet-Draft will expire on February 27, 2012.</p>527 <p>This Internet-Draft will expire on March 2, 2012.</p> 528 528 <h1><a id="rfc.copyrightnotice" href="#rfc.copyrightnotice">Copyright Notice</a></h1> 529 529 <p>Copyright © 2011 IETF Trust and the persons identified as the document authors. All rights reserved.</p> … … 567 567 </ul> 568 568 </li> 569 <li>2.4 <a href="#validation.model">Validation Model</a></li> 569 <li>2.4 <a href="#validation.model">Validation Model</a><ul> 570 <li>2.4.1 <a href="#freshening.responses">Freshening Responses</a></li> 571 </ul> 572 </li> 570 573 <li>2.5 <a href="#invalidation.after.updates.or.deletions">Request Methods that Invalidate</a></li> 571 574 <li>2.6 <a href="#caching.authenticated.responses">Shared Caching of Authenticated Responses</a></li> 572 575 <li>2.7 <a href="#caching.negotiated.responses">Caching Negotiated Responses</a></li> 573 576 <li>2.8 <a href="#combining.responses">Combining Partial Content</a></li> 574 <li>2.9 <a href="#freshening.responses">Freshening Responses</a></li>575 577 </ul> 576 578 </li> … … 964 966 <div id="rfc.figure.u.7"></div><pre class="text"> resident_time = now - response_time; 965 967 current_age = corrected_initial_age + resident_time; 966 </pre><p id="rfc.section.2.3.2.p.13">Additional rules for requirements on parsing and encoding of dates and other potential problems with date encodings include:</p>968 </pre><p id="rfc.section.2.3.2.p.13">Additionally, to avoid common problems in date parsing:</p> 967 969 <p id="rfc.section.2.3.2.p.14"> </p> 968 970 <ul> … … 1007 1009 that stored response. 1008 1010 </p> 1009 <p id="rfc.section.2.4.p.4">A 304 (Not Modified) response status code indicates that the stored response can be updated and reused; see <a href="#freshening.responses" title="Freshening Responses">Section 2.9</a>. 1010 </p> 1011 <p id="rfc.section.2.4.p.5">A full response (i.e., one with a response body) indicates that none of the stored responses nominated in the conditional 1012 request is suitable. Instead, a cache <em class="bcp14">SHOULD</em> use the full response to satisfy the request and <em class="bcp14">MAY</em> replace the stored response(s). 1013 </p> 1014 <p id="rfc.section.2.4.p.6">If a cache receives a 5xx response while attempting to validate a response, it <em class="bcp14">MAY</em> either forward this response to the requesting client, or act as if the server failed to respond. In the latter case, it <em class="bcp14">MAY</em> return a previously stored response (see <a href="#serving.stale.responses" title="Serving Stale Responses">Section 2.3.3</a>). 1015 </p> 1011 <p id="rfc.section.2.4.p.4">Cache handling of a response to a conditional request is dependent upon its status code:</p> 1012 <p id="rfc.section.2.4.p.5"> </p> 1013 <ul> 1014 <li>A 304 (Not Modified) response status code indicates that the stored response can be updated and reused; see <a href="#freshening.responses" title="Freshening Responses">Section 2.4.1</a>. 1015 </li> 1016 <li>A full response (i.e., one with a response body) indicates that none of the stored responses nominated in the conditional 1017 request is suitable. Instead, a cache <em class="bcp14">SHOULD</em> use the full response to satisfy the request and <em class="bcp14">MAY</em> replace the stored response(s). 1018 </li> 1019 <li>However, if a cache receives a 5xx response while attempting to validate a response, it <em class="bcp14">MAY</em> either forward this response to the requesting client, or act as if the server failed to respond. In the latter case, it <em class="bcp14">MAY</em> return a previously stored response (see <a href="#serving.stale.responses" title="Serving Stale Responses">Section 2.3.3</a>). 1020 </li> 1021 </ul> 1022 <h3 id="rfc.section.2.4.1"><a href="#rfc.section.2.4.1">2.4.1</a> <a id="freshening.responses" href="#freshening.responses">Freshening Responses</a></h3> 1023 <p id="rfc.section.2.4.1.p.1">When a cache receives a 304 (Not Modified) response and already has one or more stored 200 (OK) responses for the same cache 1024 key, the cache needs to identify which of the stored responses are updated by this new response and then update the stored 1025 response(s) with the new information provided in the 304 response. 1026 </p> 1027 <ul> 1028 <li>If the new response contains a strong validator, then that strong validator identifies the selected representation. All of 1029 the stored responses with the same strong validator are selected. If none of the stored responses contain the same strong 1030 validator, then this new response corresponds to a new selected representation and <em class="bcp14">MUST NOT</em> update the existing stored responses. 1031 </li> 1032 <li>If the new response contains a weak validator and that validator corresponds to one of the cache's stored responses, then 1033 the most recent of those matching stored responses is selected. 1034 </li> 1035 <li>If the new response does not include any form of validator, there is only one stored response, and that stored response also 1036 lacks a validator, then that stored response is selected. 1037 </li> 1038 </ul> 1039 <p id="rfc.section.2.4.1.p.2">If a stored response is selected for update, the cache <em class="bcp14">MUST</em>: 1040 </p> 1041 <ul> 1042 <li>delete any Warning header fields in the stored response with warn-code 1xx (see <a href="#header.warning" id="rfc.xref.header.warning.2" title="Warning">Section 3.6</a>); 1043 </li> 1044 <li>retain any Warning header fields in the stored response with warn-code 2xx; and,</li> 1045 <li>use other header fields provided in the 304 response to replace all instances of the corresponding header fields in the stored 1046 response. 1047 </li> 1048 </ul> 1016 1049 <h2 id="rfc.section.2.5"><a href="#rfc.section.2.5">2.5</a> <a id="invalidation.after.updates.or.deletions" href="#invalidation.after.updates.or.deletions">Request Methods that Invalidate</a></h2> 1017 1050 <p id="rfc.section.2.5.p.1">Because unsafe request methods (<a href="p2-semantics.html#safe.methods" title="Safe Methods">Section 6.1.1</a> of <a href="#Part2" id="rfc.xref.Part2.4"><cite title="HTTP/1.1, part 2: Message Semantics">[Part2]</cite></a>) such as PUT, POST or DELETE have the potential for changing state on the origin server, intervening caches can use them … … 1076 1109 </p> 1077 1110 <ul> 1078 <li>delete any Warning header fields in the stored response with warn-code 1xx (see <a href="#header.warning" id="rfc.xref.header.warning. 2" title="Warning">Section 3.6</a>);1111 <li>delete any Warning header fields in the stored response with warn-code 1xx (see <a href="#header.warning" id="rfc.xref.header.warning.3" title="Warning">Section 3.6</a>); 1079 1112 </li> 1080 1113 <li>retain any Warning header fields in the stored response with warn-code 2xx; and,</li> 1081 1114 <li>use other header fields provided in the new response, aside from Content-Range, to replace all instances of the corresponding 1082 1115 header fields in the stored response. 1083 </li>1084 </ul>1085 <h2 id="rfc.section.2.9"><a href="#rfc.section.2.9">2.9</a> <a id="freshening.responses" href="#freshening.responses">Freshening Responses</a></h2>1086 <p id="rfc.section.2.9.p.1">When a cache receives a 304 (Not Modified) response and already has one or more stored 200 (OK) responses for the same cache1087 key, the cache needs to identify which of the stored responses are updated by this new response and then update the stored1088 response(s) with the new information provided in the 304 response.1089 </p>1090 <ul>1091 <li>If the new response contains a strong validator, then that strong validator identifies the selected representation. All of1092 the stored responses with the same strong validator are selected. If none of the stored responses contain the same strong1093 validator, then this new response corresponds to a new selected representation and <em class="bcp14">MUST NOT</em> update the existing stored responses.1094 </li>1095 <li>If the new response contains a weak validator and that validator corresponds to one of the cache's stored responses, then1096 the most recent of those matching stored responses is selected.1097 </li>1098 <li>If the new response does not include any form of validator, there is only one stored response, and that stored response also1099 lacks a validator, then that stored response is selected.1100 </li>1101 </ul>1102 <p id="rfc.section.2.9.p.2">If a stored response is selected for update, the cache <em class="bcp14">MUST</em>:1103 </p>1104 <ul>1105 <li>delete any Warning header fields in the stored response with warn-code 1xx (see <a href="#header.warning" id="rfc.xref.header.warning.3" title="Warning">Section 3.6</a>);1106 </li>1107 <li>retain any Warning header fields in the stored response with warn-code 2xx; and,</li>1108 <li>use other header fields provided in the 304 response to replace all instances of the corresponding header fields in the stored1109 response.1110 1116 </li> 1111 1117 </ul> … … 2129 2135 <li>Pragma <a href="#rfc.xref.header.pragma.1">2.2</a>, <a href="#rfc.xref.header.pragma.2">3.2</a>, <a href="#rfc.iref.h.5"><b>3.4</b></a>, <a href="#rfc.xref.header.pragma.3">5.2</a></li> 2130 2136 <li>Vary <a href="#rfc.xref.header.vary.1">2.7</a>, <a href="#rfc.iref.h.6"><b>3.5</b></a>, <a href="#rfc.xref.header.vary.2">5.2</a></li> 2131 <li>Warning <a href="#rfc.xref.header.warning.1">2.3.3</a>, <a href="#rfc.xref.header.warning.2">2. 8</a>, <a href="#rfc.xref.header.warning.3">2.9</a>, <a href="#rfc.iref.h.7"><b>3.6</b></a>, <a href="#rfc.xref.header.warning.4">5.2</a>, <a href="#rfc.xref.header.warning.5">A</a></li>2137 <li>Warning <a href="#rfc.xref.header.warning.1">2.3.3</a>, <a href="#rfc.xref.header.warning.2">2.4.1</a>, <a href="#rfc.xref.header.warning.3">2.8</a>, <a href="#rfc.iref.h.7"><b>3.6</b></a>, <a href="#rfc.xref.header.warning.4">5.2</a>, <a href="#rfc.xref.header.warning.5">A</a></li> 2132 2138 </ul> 2133 2139 </li> … … 2280 2286 </li> 2281 2287 <li><a id="rfc.index.W" href="#rfc.index.W"><b>W</b></a><ul> 2282 <li>Warning header field <a href="#rfc.xref.header.warning.1">2.3.3</a>, <a href="#rfc.xref.header.warning.2">2. 8</a>, <a href="#rfc.xref.header.warning.3">2.9</a>, <a href="#rfc.iref.w.1"><b>3.6</b></a>, <a href="#rfc.xref.header.warning.4">5.2</a>, <a href="#rfc.xref.header.warning.5">A</a></li>2288 <li>Warning header field <a href="#rfc.xref.header.warning.1">2.3.3</a>, <a href="#rfc.xref.header.warning.2">2.4.1</a>, <a href="#rfc.xref.header.warning.3">2.8</a>, <a href="#rfc.iref.w.1"><b>3.6</b></a>, <a href="#rfc.xref.header.warning.4">5.2</a>, <a href="#rfc.xref.header.warning.5">A</a></li> 2283 2289 </ul> 2284 2290 </li> -
draft-ietf-httpbis/latest/p6-cache.xml
r1418 r1419 960 960 satisfied by that stored response. 961 961 </t> 962 <t> 963 A 304 (Not Modified) response status code indicates that the stored 964 response can be updated and reused; see <xref target="freshening.responses"/>. 965 </t> 966 <t> 967 A full response (i.e., one with a response body) indicates that none of the 968 stored responses nominated in the conditional request is suitable. Instead, 969 a cache &SHOULD; use the full response to satisfy the request and &MAY; 970 replace the stored response(s). 971 </t> 972 <t> 973 If a cache receives a 5xx response while attempting to validate a response, 974 it &MAY; either forward this response to the requesting client, or act as 975 if the server failed to respond. In the latter case, it &MAY; return a 976 previously stored response (see <xref target="serving.stale.responses" />). 977 </t> 962 963 <t>Cache handling of a response to a conditional request is dependent upon its status code:</t> 964 965 <t> 966 <list style="symbols"> 967 <t> 968 A 304 (Not Modified) response status code indicates that the stored 969 response can be updated and reused; see <xref 970 target="freshening.responses"/>. 971 </t> 972 <t> 973 A full response (i.e., one with a response body) indicates that none 974 of the stored responses nominated in the conditional request is 975 suitable. Instead, a cache &SHOULD; use the full response to satisfy 976 the request and &MAY; replace the stored response(s). 977 </t> 978 <t> 979 However, if a cache receives a 5xx response while attempting to 980 validate a response, it &MAY; either forward this response to the 981 requesting client, or act as if the server failed to respond. In the 982 latter case, it &MAY; return a previously stored response (see <xref 983 target="serving.stale.responses" />). 984 </t> 985 </list> 986 </t> 987 988 <section anchor="freshening.responses" title="Freshening Responses"> 989 <t> 990 When a cache receives a 304 (Not Modified) response and already has one 991 or more stored 200 (OK) responses for the same cache key, the cache needs 992 to identify which of the stored responses are updated by this new response 993 and then update the stored response(s) with the new information provided in 994 the 304 response. 995 <list style="symbols"> 996 <t> 997 If the new response contains a strong validator, then that strong 998 validator identifies the selected representation. All of the stored 999 responses with the same strong validator are selected. 1000 If none of the stored responses contain the same strong validator, then 1001 this new response corresponds to a new selected representation and 1002 &MUST-NOT; update the existing stored responses. 1003 </t> 1004 <t> 1005 If the new response contains a weak validator and that validator 1006 corresponds to one of the cache's stored responses, then the most 1007 recent of those matching stored responses is selected. 1008 </t> 1009 <t> 1010 If the new response does not include any form of validator, there is 1011 only one stored response, and that stored response also lacks a 1012 validator, then that stored response is selected. 1013 </t> 1014 </list> 1015 </t> 1016 <t> 1017 If a stored response is selected for update, the cache &MUST;: 1018 <list style="symbols"> 1019 <t>delete any Warning header fields in the stored response with 1020 warn-code 1xx (see <xref target="header.warning" />);</t> 1021 <t>retain any Warning header fields in the stored response with 1022 warn-code 2xx; and,</t> 1023 <t>use other header fields provided in the 304 response to replace 1024 all instances of the corresponding header fields in the stored 1025 response.</t> 1026 </list> 1027 </t> 1028 </section> 1029 978 1030 </section> 979 1031 … … 1122 1174 </section> 1123 1175 1124 <section anchor="freshening.responses" title="Freshening Responses">1125 <t>1126 When a cache receives a 304 (Not Modified) response and already has one1127 or more stored 200 (OK) responses for the same cache key, the cache needs1128 to identify which of the stored responses are updated by this new response1129 and then update the stored response(s) with the new information provided in1130 the 304 response.1131 <list style="symbols">1132 <t>1133 If the new response contains a strong validator, then that strong1134 validator identifies the selected representation. All of the stored1135 responses with the same strong validator are selected.1136 If none of the stored responses contain the same strong validator, then1137 this new response corresponds to a new selected representation and1138 &MUST-NOT; update the existing stored responses.1139 </t>1140 <t>1141 If the new response contains a weak validator and that validator1142 corresponds to one of the cache's stored responses, then the most1143 recent of those matching stored responses is selected.1144 </t>1145 <t>1146 If the new response does not include any form of validator, there is1147 only one stored response, and that stored response also lacks a1148 validator, then that stored response is selected.1149 </t>1150 </list>1151 </t>1152 <t>1153 If a stored response is selected for update, the cache &MUST;:1154 <list style="symbols">1155 <t>delete any Warning header fields in the stored response with1156 warn-code 1xx (see <xref target="header.warning" />);</t>1157 <t>retain any Warning header fields in the stored response with1158 warn-code 2xx; and,</t>1159 <t>use other header fields provided in the 304 response to replace1160 all instances of the corresponding header fields in the stored1161 response.</t>1162 </list>1163 </t>1164 </section>1165 1176 1166 1177 </section>
Note: See TracChangeset
for help on using the changeset viewer.