Ignore:
Timestamp:
Aug 29, 2011, 6:05:39 PM (8 years ago)
Author:
mnot@…
Message:

Move 'freshening responses' under 'validation model'

Location:
draft-ietf-httpbis/latest
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • draft-ietf-httpbis/latest/p6-cache.html

    r1416 r1419  
    362362  }
    363363  @bottom-center {
    364        content: "Expires February 27, 2012";
     364       content: "Expires March 2, 2012";
    365365  }
    366366  @bottom-right {
     
    408408      <meta name="dct.creator" content="Reschke, J. F.">
    409409      <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">
    411411      <meta name="dct.replaces" content="urn:ietf:rfc:2616">
    412412      <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 &#34;HTTP/1.1&#34; 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.">
     
    434434            </tr>
    435435            <tr>
    436                <td class="left">Expires: February 27, 2012</td>
     436               <td class="left">Expires: March 2, 2012</td>
    437437               <td class="right">J. Mogul</td>
    438438            </tr>
     
    495495            <tr>
    496496               <td class="left"></td>
    497                <td class="right">August 26, 2011</td>
     497               <td class="right">August 30, 2011</td>
    498498            </tr>
    499499         </tbody>
     
    525525         in progress”.
    526526      </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>
    528528      <h1><a id="rfc.copyrightnotice" href="#rfc.copyrightnotice">Copyright Notice</a></h1>
    529529      <p>Copyright © 2011 IETF Trust and the persons identified as the document authors. All rights reserved.</p>
     
    567567                  </ul>
    568568               </li>
    569                <li>2.4&nbsp;&nbsp;&nbsp;<a href="#validation.model">Validation Model</a></li>
     569               <li>2.4&nbsp;&nbsp;&nbsp;<a href="#validation.model">Validation Model</a><ul>
     570                     <li>2.4.1&nbsp;&nbsp;&nbsp;<a href="#freshening.responses">Freshening Responses</a></li>
     571                  </ul>
     572               </li>
    570573               <li>2.5&nbsp;&nbsp;&nbsp;<a href="#invalidation.after.updates.or.deletions">Request Methods that Invalidate</a></li>
    571574               <li>2.6&nbsp;&nbsp;&nbsp;<a href="#caching.authenticated.responses">Shared Caching of Authenticated Responses</a></li>
    572575               <li>2.7&nbsp;&nbsp;&nbsp;<a href="#caching.negotiated.responses">Caching Negotiated Responses</a></li>
    573576               <li>2.8&nbsp;&nbsp;&nbsp;<a href="#combining.responses">Combining Partial Content</a></li>
    574                <li>2.9&nbsp;&nbsp;&nbsp;<a href="#freshening.responses">Freshening Responses</a></li>
    575577            </ul>
    576578         </li>
     
    964966      <div id="rfc.figure.u.7"></div><pre class="text">  resident_time = now - response_time;
    965967  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>
    967969      <p id="rfc.section.2.3.2.p.14"> </p>
    968970      <ul>
     
    10071009         that stored response.
    10081010      </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&nbsp;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&nbsp;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&nbsp;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&nbsp;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>&nbsp;<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&nbsp;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>
    10161049      <h2 id="rfc.section.2.5"><a href="#rfc.section.2.5">2.5</a>&nbsp;<a id="invalidation.after.updates.or.deletions" href="#invalidation.after.updates.or.deletions">Request Methods that Invalidate</a></h2>
    10171050      <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
     
    10761109      </p>
    10771110      <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&nbsp;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&nbsp;3.6</a>);
    10791112         </li>
    10801113         <li>retain any Warning header fields in the stored response with warn-code 2xx; and,</li>
    10811114         <li>use other header fields provided in the new response, aside from Content-Range, to replace all instances of the corresponding
    10821115            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>&nbsp;<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 cache
    1087          key, the cache needs to identify which of the stored responses are updated by this new response and then update the stored
    1088          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 of
    1092             the stored responses with the same strong validator are selected. If none of the stored responses contain the same strong
    1093             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, then
    1096             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 also
    1099             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&nbsp;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 stored
    1109             response.
    11101116         </li>
    11111117      </ul>
     
    21292135                        <li>Pragma&nbsp;&nbsp;<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>
    21302136                        <li>Vary&nbsp;&nbsp;<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&nbsp;&nbsp;<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&nbsp;&nbsp;<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>
    21322138                     </ul>
    21332139                  </li>
     
    22802286            </li>
    22812287            <li><a id="rfc.index.W" href="#rfc.index.W"><b>W</b></a><ul>
    2282                   <li>Warning header field&nbsp;&nbsp;<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&nbsp;&nbsp;<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>
    22832289               </ul>
    22842290            </li>
  • draft-ietf-httpbis/latest/p6-cache.xml

    r1418 r1419  
    960960   satisfied by that stored response.
    961961</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
    9781030</section>
    9791031
     
    11221174</section>
    11231175
    1124 <section anchor="freshening.responses" title="Freshening Responses">
    1125 <t>
    1126    When a cache receives a 304 (Not Modified) response and already has one
    1127    or more stored 200 (OK) responses for the same cache key, the cache needs
    1128    to identify which of the stored responses are updated by this new response
    1129    and then update the stored response(s) with the new information provided in
    1130    the 304 response.
    1131    <list style="symbols">
    1132     <t>
    1133      If the new response contains a strong validator, then that strong
    1134      validator identifies the selected representation.  All of the stored
    1135      responses with the same strong validator are selected.
    1136      If none of the stored responses contain the same strong validator, then
    1137      this new response corresponds to a new selected representation and
    1138      &MUST-NOT; update the existing stored responses.
    1139     </t>
    1140     <t>
    1141      If the new response contains a weak validator and that validator
    1142      corresponds to one of the cache's stored responses, then the most
    1143      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 is
    1147      only one stored response, and that stored response also lacks a
    1148      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 with
    1156          warn-code 1xx (see <xref target="header.warning" />);</t>
    1157       <t>retain any Warning header fields in the stored response with
    1158          warn-code 2xx; and,</t>
    1159       <t>use other header fields provided in the 304 response to replace
    1160          all instances of the corresponding header fields in the stored
    1161          response.</t>
    1162    </list>
    1163 </t>
    1164 </section>
    11651176
    11661177</section>
Note: See TracChangeset for help on using the changeset viewer.