Changeset 1291


Ignore:
Timestamp:
May 26, 2011, 9:42:18 PM (9 years ago)
Author:
mnot@…
Message:

Explicitly allow cache-control extensions to override requirements; se #291

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

Legend:

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

    r1290 r1291  
    767767         </li>
    768768      </ul>
    769       <p id="rfc.section.2.1.p.2">In this context, a cache has "understood" a request method or a response status code if it recognises it and implements any
     769      <p id="rfc.section.2.1.p.2">Note that any of the requirements listed above can be overridden by a cache-control extension; see <a href="#cache.control.extensions" title="Cache Control Extensions">Section&nbsp;3.2.3</a>.
     770      </p>
     771      <p id="rfc.section.2.1.p.3">In this context, a cache has "understood" a request method or a response status code if it recognises it and implements any
    770772         cache-specific behaviour. In particular, 206 Partial Content responses cannot be cached by an implementation that does not
    771773         handle partial content (see <a href="#errors.or.incomplete.response.cache.behavior" title="Storing Partial and Incomplete Responses">Section&nbsp;2.1.1</a>).
    772774      </p>
    773       <p id="rfc.section.2.1.p.3">Note that in normal operation, most caches will not store a response that has neither a cache validator nor an explicit expiration
     775      <p id="rfc.section.2.1.p.4">Note that in normal operation, most caches will not store a response that has neither a cache validator nor an explicit expiration
    774776         time, as such responses are not usually useful to store. However, caches are not prohibited from storing such responses.
    775777      </p>
     
    802804         </li>
    803805      </ul>
    804       <p id="rfc.section.2.2.p.2">When a stored response is used to satisfy a request without validation, a cache <em class="bcp14">MUST</em> include a single Age header field (<a href="#header.age" id="rfc.xref.header.age.1" title="Age">Section&nbsp;3.1</a>) in the response with a value equal to the stored response's current_age; see <a href="#age.calculations" title="Calculating Age">Section&nbsp;2.3.2</a>.
    805       </p>
    806       <p id="rfc.section.2.2.p.3">A cache <em class="bcp14">MUST</em> write through requests with methods that are unsafe (<a href="p2-semantics.html#safe.methods" title="Safe Methods">Section 7.1.1</a> of <a href="#Part2" id="rfc.xref.Part2.1"><cite title="HTTP/1.1, part 2: Message Semantics">[Part2]</cite></a>) to the origin server; i.e., a cache must not generate a reply to such a request before having forwarded the request and
     806      <p id="rfc.section.2.2.p.2">Note that any of the requirements listed above can be overridden by a cache-control extension; see <a href="#cache.control.extensions" title="Cache Control Extensions">Section&nbsp;3.2.3</a>.
     807      </p>
     808      <p id="rfc.section.2.2.p.3">When a stored response is used to satisfy a request without validation, a cache <em class="bcp14">MUST</em> include a single Age header field (<a href="#header.age" id="rfc.xref.header.age.1" title="Age">Section&nbsp;3.1</a>) in the response with a value equal to the stored response's current_age; see <a href="#age.calculations" title="Calculating Age">Section&nbsp;2.3.2</a>.
     809      </p>
     810      <p id="rfc.section.2.2.p.4">A cache <em class="bcp14">MUST</em> write through requests with methods that are unsafe (<a href="p2-semantics.html#safe.methods" title="Safe Methods">Section 7.1.1</a> of <a href="#Part2" id="rfc.xref.Part2.1"><cite title="HTTP/1.1, part 2: Message Semantics">[Part2]</cite></a>) to the origin server; i.e., a cache must not generate a reply to such a request before having forwarded the request and
    807811         having received a corresponding response.
    808812      </p>
    809       <p id="rfc.section.2.2.p.4">Also, note that unsafe requests might invalidate already stored responses; see <a href="#invalidation.after.updates.or.deletions" title="Request Methods that Invalidate">Section&nbsp;2.5</a>.
    810       </p>
    811       <p id="rfc.section.2.2.p.5">When more than one suitable response is stored, a cache <em class="bcp14">MUST</em> use the most recent response (as determined by the Date header field). It can also forward a request with "Cache-Control:
     813      <p id="rfc.section.2.2.p.5">Also, note that unsafe requests might invalidate already stored responses; see <a href="#invalidation.after.updates.or.deletions" title="Request Methods that Invalidate">Section&nbsp;2.5</a>.
     814      </p>
     815      <p id="rfc.section.2.2.p.6">When more than one suitable response is stored, a cache <em class="bcp14">MUST</em> use the most recent response (as determined by the Date header field). It can also forward a request with "Cache-Control:
    812816         max-age=0" or "Cache-Control: no-cache" to disambiguate which response to use.
    813817      </p>
    814       <p id="rfc.section.2.2.p.6">A cache that does not have a clock available <em class="bcp14">MUST NOT</em> use stored responses without revalidating them on every use. A cache, especially a shared cache, <em class="bcp14">SHOULD</em> use a mechanism, such as NTP <a href="#RFC1305" id="rfc.xref.RFC1305.1"><cite title="Network Time Protocol (Version 3) Specification, Implementation">[RFC1305]</cite></a>, to synchronize its clock with a reliable external standard.
     818      <p id="rfc.section.2.2.p.7">A cache that does not have a clock available <em class="bcp14">MUST NOT</em> use stored responses without revalidating them on every use. A cache, especially a shared cache, <em class="bcp14">SHOULD</em> use a mechanism, such as NTP <a href="#RFC1305" id="rfc.xref.RFC1305.1"><cite title="Network Time Protocol (Version 3) Specification, Implementation">[RFC1305]</cite></a>, to synchronize its clock with a reliable external standard.
    815819      </p>
    816820      <h2 id="rfc.section.2.3"><a href="#rfc.section.2.3">2.3</a>&nbsp;<a id="expiration.model" href="#expiration.model">Freshness Model</a></h2>
     
    18931897         <li> &lt;<a href="http://tools.ietf.org/wg/httpbis/trac/ticket/197">http://tools.ietf.org/wg/httpbis/trac/ticket/197</a>&gt;: "Effect of CC directives on history lists"
    18941898         </li>
     1899         <li> &lt;<a href="http://tools.ietf.org/wg/httpbis/trac/ticket/291">http://tools.ietf.org/wg/httpbis/trac/ticket/291</a>&gt;: "Cache Extensions can override no-store, etc."
     1900         </li>
    18951901      </ul>
    18961902      <p id="rfc.section.C.10.p.2">Affected issues: </p>
  • draft-ietf-httpbis/latest/p6-cache.xml

    r1290 r1291  
    482482</t>
    483483<t>
     484         Note that any of the requirements listed above can be overridden by a
     485   cache-control extension; see <xref target="cache.control.extensions" />.
     486</t>
     487<t>
    484488   In this context, a cache has "understood" a request method or a response
    485489   status code if it recognises it and implements any cache-specific
     
    541545      </t>
    542546  </list>
     547</t>
     548<t>
     549         Note that any of the requirements listed above can be overridden by a
     550   cache-control extension; see <xref target="cache.control.extensions" />.
    543551</t>
    544552<t>
     
    25692577      "Effect of CC directives on history lists"
    25702578    </t>
     2579    <t>
     2580                  <eref target="http://tools.ietf.org/wg/httpbis/trac/ticket/291" />:
     2581                  "Cache Extensions can override no-store, etc."
     2582                </t>
    25712583  </list>
    25722584</t>
Note: See TracChangeset for help on using the changeset viewer.