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

Move 'freshening responses' under 'validation model'

File:
1 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>
Note: See TracChangeset for help on using the changeset viewer.