* WGs marked with an * asterisk has had at least one new draft made available during the last 5 days

Changeset 1695


Ignore:
Timestamp:
2012-06-25 00:18:34 (2 years ago)
Author:
julian.reschke@gmx.de
Message:

remove predefined directives from cache control ABNF (make it generic) and deal with the special cases introduced by pre-existing cache directives (see #307)

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

Legend:

Unmodified
Added
Removed
  • draft-ietf-httpbis/latest/httpbis.abnf

    r1663 r1695  
    8080byte-ranges-specifier = bytes-unit "=" byte-range-set 
    8181bytes-unit = "bytes" 
    82 cache-directive = cache-request-directive / cache-response-directive 
    83 cache-extension = token [ "=" ( token / quoted-string ) ] 
    84 cache-request-directive = "no-cache" / "no-store" / ( "max-age=" delta-seconds ) / ( "max-stale" [ "=" delta-seconds ] ) / ( "min-fresh=" delta-seconds ) / "no-transform" / "only-if-cached" / cache-extension 
    85 cache-response-directive = "public" / ( "private" [ "=" DQUOTE *( "," OWS ) field-name *( OWS "," [ OWS field-name ] ) DQUOTE ] ) / ( "no-cache" [ "=" DQUOTE *( "," OWS ) field-name *( OWS "," [ OWS field-name ] ) DQUOTE ] ) / "no-store" / "no-transform" / "must-revalidate" / "proxy-revalidate" / ( "max-age=" delta-seconds ) / ( "s-maxage=" delta-seconds ) / cache-extension 
     82cache-directive = token [ "=" ( token / quoted-string ) ] 
    8683challenge = auth-scheme [ 1*SP ( b64token / [ ( "," / auth-param ) *( OWS "," [ OWS auth-param ] ) ] ) ] 
    8784charset = token 
  • draft-ietf-httpbis/latest/p6-cache.html

    r1692 r1695  
    452452  }  
    453453  @bottom-center { 
    454        content: "Expires December 25, 2012";  
     454       content: "Expires December 27, 2012";  
    455455  }  
    456456  @bottom-right { 
     
    494494      <meta name="dct.creator" content="Reschke, J. F."> 
    495495      <meta name="dct.identifier" content="urn:ietf:id:draft-ietf-httpbis-p6-cache-latest"> 
    496       <meta name="dct.issued" scheme="ISO8601" content="2012-06-23"> 
     496      <meta name="dct.issued" scheme="ISO8601" content="2012-06-25"> 
    497497      <meta name="dct.replaces" content="urn:ietf:rfc:2616"> 
    498498      <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."> 
     
    520520            </tr> 
    521521            <tr> 
    522                <td class="left">Expires: December 25, 2012</td> 
     522               <td class="left">Expires: December 27, 2012</td> 
    523523               <td class="right">M. Nottingham, Editor</td> 
    524524            </tr> 
     
    537537            <tr> 
    538538               <td class="left"></td> 
    539                <td class="right">June 23, 2012</td> 
     539               <td class="right">June 25, 2012</td> 
    540540            </tr> 
    541541         </tbody> 
     
    567567         in progress”. 
    568568      </p> 
    569       <p>This Internet-Draft will expire on December 25, 2012.</p> 
     569      <p>This Internet-Draft will expire on December 27, 2012.</p> 
    570570      <h1><a id="rfc.copyrightnotice" href="#rfc.copyrightnotice">Copyright Notice</a></h1> 
    571571      <p>Copyright © 2012 IETF Trust and the persons identified as the document authors. All rights reserved.</p> 
     
    623623               <li>3.1&nbsp;&nbsp;&nbsp;<a href="#header.age">Age</a></li> 
    624624               <li>3.2&nbsp;&nbsp;&nbsp;<a href="#header.cache-control">Cache-Control</a><ul> 
    625                      <li>3.2.1&nbsp;&nbsp;&nbsp;<a href="#cache-request-directive">Request Cache-Control Directives</a></li> 
    626                      <li>3.2.2&nbsp;&nbsp;&nbsp;<a href="#cache-response-directive">Response Cache-Control Directives</a></li> 
     625                     <li>3.2.1&nbsp;&nbsp;&nbsp;<a href="#cache-request-directive">Request Cache-Control Directives</a><ul> 
     626                           <li>3.2.1.1&nbsp;&nbsp;&nbsp;<a href="#cache-request-directive.no-cache">no-cache</a></li> 
     627                           <li>3.2.1.2&nbsp;&nbsp;&nbsp;<a href="#cache-request-directive.no-store">no-store</a></li> 
     628                           <li>3.2.1.3&nbsp;&nbsp;&nbsp;<a href="#cache-request-directive.max-age">max-age</a></li> 
     629                           <li>3.2.1.4&nbsp;&nbsp;&nbsp;<a href="#cache-request-directive.max-stale">max-stale</a></li> 
     630                           <li>3.2.1.5&nbsp;&nbsp;&nbsp;<a href="#cache-request-directive.min-fresh">min-fresh</a></li> 
     631                           <li>3.2.1.6&nbsp;&nbsp;&nbsp;<a href="#cache-request-directive.no-transform">no-transform</a></li> 
     632                           <li>3.2.1.7&nbsp;&nbsp;&nbsp;<a href="#cache-request-directive.only-if-cached">only-if-cached</a></li> 
     633                        </ul> 
     634                     </li> 
     635                     <li>3.2.2&nbsp;&nbsp;&nbsp;<a href="#cache-response-directive">Response Cache-Control Directives</a><ul> 
     636                           <li>3.2.2.1&nbsp;&nbsp;&nbsp;<a href="#cache-response-directive.only-if-cached">public</a></li> 
     637                           <li>3.2.2.2&nbsp;&nbsp;&nbsp;<a href="#cache-response-directive.private">private</a></li> 
     638                           <li>3.2.2.3&nbsp;&nbsp;&nbsp;<a href="#cache-response-directive.no-cache">no-cache</a></li> 
     639                           <li>3.2.2.4&nbsp;&nbsp;&nbsp;<a href="#cache-response-directive.no-store">no-store</a></li> 
     640                           <li>3.2.2.5&nbsp;&nbsp;&nbsp;<a href="#cache-response-directive.must-revalidate">must-revalidate</a></li> 
     641                           <li>3.2.2.6&nbsp;&nbsp;&nbsp;<a href="#cache-response-directive.proxy-revalidate">proxy-revalidate</a></li> 
     642                           <li>3.2.2.7&nbsp;&nbsp;&nbsp;<a href="#cache-response-directive.max-age">max-age</a></li> 
     643                           <li>3.2.2.8&nbsp;&nbsp;&nbsp;<a href="#cache-response-directive.s-maxage">s-maxage</a></li> 
     644                           <li>3.2.2.9&nbsp;&nbsp;&nbsp;<a href="#cache-response-directive.no-transform">no-transform</a></li> 
     645                        </ul> 
     646                     </li> 
    627647                     <li>3.2.3&nbsp;&nbsp;&nbsp;<a href="#cache.control.extensions">Cache Control Extensions</a></li> 
    628648                  </ul> 
     
    12231243         cache. 
    12241244      </p> 
    1225       <p id="rfc.section.3.2.p.5">Cache directives are identified by a token, to be compared case-insensitively, and have an optional argument.</p> 
     1245      <p id="rfc.section.3.2.p.5">Cache directives are identified by a token, to be compared case-insensitively, and have an optional argument, that can use 
     1246         both token and quoted-string syntax. For the directives defined below that define arguments, recipients ought to accept both 
     1247         forms, even if one is documented to be preferred. For any directive not defined by this specification, recipients <em class="bcp14">MUST</em> accept both forms. 
     1248      </p> 
    12261249      <div id="rfc.figure.u.9"></div><pre class="inline"><span id="rfc.iref.g.3"></span><span id="rfc.iref.g.4"></span>  <a href="#header.cache-control" class="smpl">Cache-Control</a>   = 1#<a href="#header.cache-control" class="smpl">cache-directive</a> 
    12271250 
    1228   <a href="#header.cache-control" class="smpl">cache-directive</a> = <a href="#header.cache-control" class="smpl">cache-request-directive</a> 
    1229      / <a href="#header.cache-control" class="smpl">cache-response-directive</a> 
    1230  
    1231   <a href="#header.cache-control" class="smpl">cache-extension</a> = <a href="#core.rules" class="smpl">token</a> [ "=" ( <a href="#core.rules" class="smpl">token</a> / <a href="#core.rules" class="smpl">quoted-string</a> ) ] 
    1232 </pre><h3 id="rfc.section.3.2.1"><a href="#rfc.section.3.2.1">3.2.1</a>&nbsp;<a id="cache-request-directive" href="#cache-request-directive">Request Cache-Control Directives</a></h3> 
    1233       <div id="rfc.figure.u.10"></div><pre class="inline"><span id="rfc.iref.g.5"></span>  <a href="#header.cache-control" class="smpl">cache-request-directive</a> = 
    1234        "no-cache" 
    1235      / "no-store" 
    1236      / "max-age" "=" <a href="#delta-seconds" class="smpl">delta-seconds</a> 
    1237      / "max-stale" [ "=" <a href="#delta-seconds" class="smpl">delta-seconds</a> ] 
    1238      / "min-fresh" "=" <a href="#delta-seconds" class="smpl">delta-seconds</a> 
    1239      / "no-transform" 
    1240      / "only-if-cached" 
    1241      / <a href="#header.cache-control" class="smpl">cache-extension</a> 
    1242 </pre><p id="rfc.section.3.2.1.p.2"> <dfn>no-cache</dfn>  <span id="rfc.iref.c.7"></span>  <span id="rfc.iref.n.1"></span>   
    1243       </p> 
     1251  <a href="#header.cache-control" class="smpl">cache-directive</a> = <a href="#core.rules" class="smpl">token</a> [ "=" ( <a href="#core.rules" class="smpl">token</a> / <a href="#core.rules" class="smpl">quoted-string</a> ) ] 
     1252</pre><p id="rfc.section.3.2.p.7">For the cache directives defined below, no argument is defined (nor allowed) otherwise stated otherwise.</p> 
     1253      <h3 id="rfc.section.3.2.1"><a href="#rfc.section.3.2.1">3.2.1</a>&nbsp;<a id="cache-request-directive" href="#cache-request-directive">Request Cache-Control Directives</a></h3> 
     1254      <div id="rfc.iref.c.7"></div> 
     1255      <div id="rfc.iref.n.1"></div> 
     1256      <h4 id="rfc.section.3.2.1.1"><a href="#rfc.section.3.2.1.1">3.2.1.1</a>&nbsp;<a id="cache-request-directive.no-cache" href="#cache-request-directive.no-cache">no-cache</a></h4> 
     1257      <p id="rfc.section.3.2.1.1.p.1">The no-cache request directive indicates that a cache <em class="bcp14">MUST NOT</em> use a stored response to satisfy the request without successful validation on the origin server. 
     1258      </p> 
     1259      <div id="rfc.iref.c.8"></div> 
     1260      <div id="rfc.iref.n.2"></div> 
     1261      <h4 id="rfc.section.3.2.1.2"><a href="#rfc.section.3.2.1.2">3.2.1.2</a>&nbsp;<a id="cache-request-directive.no-store" href="#cache-request-directive.no-store">no-store</a></h4> 
     1262      <p id="rfc.section.3.2.1.2.p.1">The no-store request directive indicates that a cache <em class="bcp14">MUST NOT</em> store any part of either this request or any response to it. This directive applies to both private and shared caches. "<em class="bcp14">MUST NOT</em> store" in this context means that the cache <em class="bcp14">MUST NOT</em> intentionally store the information in non-volatile storage, and <em class="bcp14">MUST</em> make a best-effort attempt to remove the information from volatile storage as promptly as possible after forwarding it. 
     1263      </p> 
     1264      <p id="rfc.section.3.2.1.2.p.2">This directive is NOT a reliable or sufficient mechanism for ensuring privacy. In particular, malicious or compromised caches 
     1265         might not recognize or obey this directive, and communications networks might be vulnerable to eavesdropping. 
     1266      </p> 
     1267      <p id="rfc.section.3.2.1.2.p.3">Note that if a request containing this directive is satisfied from a cache, the no-store request directive does not apply 
     1268         to the already stored response. 
     1269      </p> 
     1270      <div id="rfc.iref.c.9"></div> 
     1271      <div id="rfc.iref.m.1"></div> 
     1272      <h4 id="rfc.section.3.2.1.3"><a href="#rfc.section.3.2.1.3">3.2.1.3</a>&nbsp;<a id="cache-request-directive.max-age" href="#cache-request-directive.max-age">max-age</a></h4> 
     1273      <p id="rfc.section.3.2.1.3.p.1">Argument syntax: </p> 
    12441274      <ul class="empty"> 
    1245          <li>The no-cache request directive indicates that a cache <em class="bcp14">MUST NOT</em> use a stored response to satisfy the request without successful validation on the origin server. 
    1246          </li> 
    1247       </ul> 
    1248       <p id="rfc.section.3.2.1.p.3"> <dfn>no-store</dfn>  <span id="rfc.iref.c.8"></span>  <span id="rfc.iref.n.2"></span>   
    1249       </p> 
     1275         <li> <a href="#delta-seconds" class="smpl">delta-seconds</a> (see <a href="#delta-seconds" title="Delta Seconds">Section&nbsp;1.5</a>) 
     1276         </li> 
     1277      </ul> 
     1278      <p id="rfc.section.3.2.1.3.p.2">The max-age request directive indicates that the client is unwilling to accept a response whose age is greater than the specified 
     1279         number of seconds. Unless the max-stale request directive is also present, the client is not willing to accept a stale response. 
     1280      </p> 
     1281      <p id="rfc.section.3.2.1.3.p.3"> <b>Note:</b> This directive uses the token form of the argument syntax; e.g., 'max-age=5', not 'max-age="5"'. Senders <em class="bcp14">SHOULD NOT</em> use the quoted-string form. 
     1282      </p> 
     1283      <div id="rfc.iref.c.10"></div> 
     1284      <div id="rfc.iref.m.2"></div> 
     1285      <h4 id="rfc.section.3.2.1.4"><a href="#rfc.section.3.2.1.4">3.2.1.4</a>&nbsp;<a id="cache-request-directive.max-stale" href="#cache-request-directive.max-stale">max-stale</a></h4> 
     1286      <p id="rfc.section.3.2.1.4.p.1">Argument syntax: </p> 
    12501287      <ul class="empty"> 
    1251          <li>The no-store request directive indicates that a cache <em class="bcp14">MUST NOT</em> store any part of either this request or any response to it. This directive applies to both private and shared caches. "<em class="bcp14">MUST NOT</em> store" in this context means that the cache <em class="bcp14">MUST NOT</em> intentionally store the information in non-volatile storage, and <em class="bcp14">MUST</em> make a best-effort attempt to remove the information from volatile storage as promptly as possible after forwarding it. 
    1252          </li> 
    1253          <li>This directive is NOT a reliable or sufficient mechanism for ensuring privacy. In particular, malicious or compromised caches 
    1254             might not recognize or obey this directive, and communications networks might be vulnerable to eavesdropping. 
    1255          </li> 
    1256          <li>Note that if a request containing this directive is satisfied from a cache, the no-store request directive does not apply 
    1257             to the already stored response. 
    1258          </li> 
    1259       </ul> 
    1260       <p id="rfc.section.3.2.1.p.4"> <dfn>max-age</dfn>  <span id="rfc.iref.c.9"></span>  <span id="rfc.iref.m.1"></span>   
    1261       </p> 
     1288         <li> <a href="#delta-seconds" class="smpl">delta-seconds</a> (see <a href="#delta-seconds" title="Delta Seconds">Section&nbsp;1.5</a>) 
     1289         </li> 
     1290      </ul> 
     1291      <p id="rfc.section.3.2.1.4.p.2">The max-stale request directive indicates that the client is willing to accept a response that has exceeded its expiration 
     1292         time. If max-stale is assigned a value, then the client is willing to accept a response that has exceeded its expiration time 
     1293         by no more than the specified number of seconds. If no value is assigned to max-stale, then the client is willing to accept 
     1294         a stale response of any age. 
     1295      </p> 
     1296      <p id="rfc.section.3.2.1.4.p.3"> <b>Note:</b> This directive uses the token form of the argument syntax; e.g., 'max-stale=10', not 'max-stale="10"'. Senders <em class="bcp14">SHOULD NOT</em> use the quoted-string form. 
     1297      </p> 
     1298      <div id="rfc.iref.c.11"></div> 
     1299      <div id="rfc.iref.m.3"></div> 
     1300      <h4 id="rfc.section.3.2.1.5"><a href="#rfc.section.3.2.1.5">3.2.1.5</a>&nbsp;<a id="cache-request-directive.min-fresh" href="#cache-request-directive.min-fresh">min-fresh</a></h4> 
     1301      <p id="rfc.section.3.2.1.5.p.1">Argument syntax: </p> 
    12621302      <ul class="empty"> 
    1263          <li>The max-age request directive indicates that the client is unwilling to accept a response whose age is greater than the specified 
    1264             number of seconds. Unless the max-stale request directive is also present, the client is not willing to accept a stale response. 
    1265          </li> 
    1266       </ul> 
    1267       <p id="rfc.section.3.2.1.p.5"> <dfn>max-stale</dfn>  <span id="rfc.iref.c.10"></span>  <span id="rfc.iref.m.2"></span>   
    1268       </p> 
     1303         <li> <a href="#delta-seconds" class="smpl">delta-seconds</a> (see <a href="#delta-seconds" title="Delta Seconds">Section&nbsp;1.5</a>) 
     1304         </li> 
     1305      </ul> 
     1306      <p id="rfc.section.3.2.1.5.p.2">The min-fresh request directive indicates that the client is willing to accept a response whose freshness lifetime is no less 
     1307         than its current age plus the specified time in seconds. That is, the client wants a response that will still be fresh for 
     1308         at least the specified number of seconds. 
     1309      </p> 
     1310      <p id="rfc.section.3.2.1.5.p.3"> <b>Note:</b> This directive uses the token form of the argument syntax; e.g., 'min-fresh=20', not 'min-fresh="20"'. Senders <em class="bcp14">SHOULD NOT</em> use the quoted-string form. 
     1311      </p> 
     1312      <div id="rfc.iref.c.12"></div> 
     1313      <div id="rfc.iref.n.3"></div> 
     1314      <h4 id="rfc.section.3.2.1.6"><a href="#rfc.section.3.2.1.6">3.2.1.6</a>&nbsp;<a id="cache-request-directive.no-transform" href="#cache-request-directive.no-transform">no-transform</a></h4> 
     1315      <p id="rfc.section.3.2.1.6.p.1">The no-transform request directive indicates that an intermediary (whether or not it implements a cache) <em class="bcp14">MUST NOT</em> change the Content-Encoding, Content-Range or Content-Type request header fields, nor the request representation. 
     1316      </p> 
     1317      <div id="rfc.iref.c.13"></div> 
     1318      <div id="rfc.iref.o.1"></div> 
     1319      <h4 id="rfc.section.3.2.1.7"><a href="#rfc.section.3.2.1.7">3.2.1.7</a>&nbsp;<a id="cache-request-directive.only-if-cached" href="#cache-request-directive.only-if-cached">only-if-cached</a></h4> 
     1320      <p id="rfc.section.3.2.1.7.p.1">The only-if-cached request directive indicates that the client only wishes to obtain a stored response. If it receives 3ive, 
     1321         a cache <em class="bcp14">SHOULD</em> either respond using a stored response that is consistent with the other constraints of the request, or respond with a 504 
     1322         (Gateway Timeout) status code. If a group of caches is being operated as a unified system with good internal connectivity, 
     1323         a member cache <em class="bcp14">MAY</em> forward such a request within that group of caches. 
     1324      </p> 
     1325      <h3 id="rfc.section.3.2.2"><a href="#rfc.section.3.2.2">3.2.2</a>&nbsp;<a id="cache-response-directive" href="#cache-response-directive">Response Cache-Control Directives</a></h3> 
     1326      <div id="rfc.iref.c.14"></div> 
     1327      <div id="rfc.iref.p.2"></div> 
     1328      <h4 id="rfc.section.3.2.2.1"><a href="#rfc.section.3.2.2.1">3.2.2.1</a>&nbsp;<a id="cache-response-directive.only-if-cached" href="#cache-response-directive.only-if-cached">public</a></h4> 
     1329      <p id="rfc.section.3.2.2.1.p.1">The public response directive indicates that a response whose associated request contains an 'Authentication' header <em class="bcp14">MAY</em> be stored (see <a href="#caching.authenticated.responses" title="Shared Caching of Authenticated Responses">Section&nbsp;2.7</a>). 
     1330      </p> 
     1331      <div id="rfc.iref.c.15"></div> 
     1332      <div id="rfc.iref.p.3"></div> 
     1333      <h4 id="rfc.section.3.2.2.2"><a href="#rfc.section.3.2.2.2">3.2.2.2</a>&nbsp;<a id="cache-response-directive.private" href="#cache-response-directive.private">private</a></h4> 
     1334      <p id="rfc.section.3.2.2.2.p.1">Argument syntax: </p> 
    12691335      <ul class="empty"> 
    1270          <li>The max-stale request directive indicates that the client is willing to accept a response that has exceeded its expiration 
    1271             time. If max-stale is assigned a value, then the client is willing to accept a response that has exceeded its expiration time 
    1272             by no more than the specified number of seconds. If no value is assigned to max-stale, then the client is willing to accept 
    1273             a stale response of any age. 
    1274          </li> 
    1275       </ul> 
    1276       <p id="rfc.section.3.2.1.p.6"> <dfn>min-fresh</dfn>  <span id="rfc.iref.c.11"></span>  <span id="rfc.iref.m.3"></span>   
    1277       </p> 
     1336         <li>#<a href="#abnf.dependencies" class="smpl">field-name</a>  
     1337         </li> 
     1338      </ul> 
     1339      <p id="rfc.section.3.2.2.2.p.2">The private response directive indicates that the response message is intended for a single user and <em class="bcp14">MUST NOT</em> be stored by a shared cache. A private cache <em class="bcp14">MAY</em> store the response. 
     1340      </p> 
     1341      <p id="rfc.section.3.2.2.2.p.3">If the private response directive specifies one or more field-names, this requirement is limited to the field-values associated 
     1342         with the listed response header fields. That is, a shared cache <em class="bcp14">MUST NOT</em> store the specified field-names(s), whereas it <em class="bcp14">MAY</em> store the remainder of the response message. 
     1343      </p> 
     1344      <p id="rfc.section.3.2.2.2.p.4">The field-names given are not limited to the set of standard header fields defined by this specification. Field names are 
     1345         case-insensitive. 
     1346      </p> 
     1347      <p id="rfc.section.3.2.2.2.p.5"> <b>Note:</b> This usage of the word "private" only controls where the response can be stored; it cannot ensure the privacy of the message 
     1348         content. Also, private response directives with field-names are often handled by implementations as if an unqualified private 
     1349         directive was received; i.e., the special handling for the qualified form is not widely implemented. 
     1350      </p> 
     1351      <p id="rfc.section.3.2.2.2.p.6"> <b>Note:</b> This directive uses the quoted-string form of the argument syntax. Senders <em class="bcp14">SHOULD NOT</em> use the token form (even if quoting appears not to be needed for single-entry lists). 
     1352      </p> 
     1353      <div id="rfc.iref.c.16"></div> 
     1354      <div id="rfc.iref.n.4"></div> 
     1355      <h4 id="rfc.section.3.2.2.3"><a href="#rfc.section.3.2.2.3">3.2.2.3</a>&nbsp;<a id="cache-response-directive.no-cache" href="#cache-response-directive.no-cache">no-cache</a></h4> 
     1356      <p id="rfc.section.3.2.2.3.p.1">Argument syntax: </p> 
    12781357      <ul class="empty"> 
    1279          <li>The min-fresh request directive indicates that the client is willing to accept a response whose freshness lifetime is no less 
    1280             than its current age plus the specified time in seconds. That is, the client wants a response that will still be fresh for 
    1281             at least the specified number of seconds. 
    1282          </li> 
    1283       </ul> 
    1284       <p id="rfc.section.3.2.1.p.7"> <dfn>no-transform</dfn>  <span id="rfc.iref.c.12"></span>  <span id="rfc.iref.n.3"></span>   
    1285       </p> 
     1358         <li>#<a href="#abnf.dependencies" class="smpl">field-name</a>  
     1359         </li> 
     1360      </ul> 
     1361      <p id="rfc.section.3.2.2.3.p.2">The no-cache response directive indicates that the response <em class="bcp14">MUST NOT</em> be used to satisfy a subsequent request without successful validation on the origin server. This allows an origin server to 
     1362         prevent a cache from using it to satisfy a request without contacting it, even by caches that have been configured to return 
     1363         stale responses. 
     1364      </p> 
     1365      <p id="rfc.section.3.2.2.3.p.3">If the no-cache response directive specifies one or more field-names, then a cache <em class="bcp14">MAY</em> use the response to satisfy a subsequent request, subject to any other restrictions on caching. However, any header fields 
     1366         in the response that have the field-name(s) listed <em class="bcp14">MUST NOT</em> be sent in the response to a subsequent request without successful revalidation with the origin server. This allows an origin 
     1367         server to prevent the re-use of certain header fields in a response, while still allowing caching of the rest of the response. 
     1368      </p> 
     1369      <p id="rfc.section.3.2.2.3.p.4">The field-names given are not limited to the set of standard header fields defined by this specification. Field names are 
     1370         case-insensitive. 
     1371      </p> 
     1372      <p id="rfc.section.3.2.2.3.p.5"> <b>Note:</b> Most HTTP/1.0 caches will not recognize or obey this directive. Also, no-cache response directives with field-names are often 
     1373         handled by implementations as if an unqualified no-cache directive was received; i.e., the special handling for the qualified 
     1374         form is not widely implemented. 
     1375      </p> 
     1376      <p id="rfc.section.3.2.2.3.p.6"> <b>Note:</b> This directive uses the quoted-string form of the argument syntax. Senders <em class="bcp14">SHOULD NOT</em> use the token form (even if quoting appears not to be needed for single-entry lists). 
     1377      </p> 
     1378      <div id="rfc.iref.c.17"></div> 
     1379      <div id="rfc.iref.n.5"></div> 
     1380      <h4 id="rfc.section.3.2.2.4"><a href="#rfc.section.3.2.2.4">3.2.2.4</a>&nbsp;<a id="cache-response-directive.no-store" href="#cache-response-directive.no-store">no-store</a></h4> 
     1381      <p id="rfc.section.3.2.2.4.p.1">The no-store response directive indicates that a cache <em class="bcp14">MUST NOT</em> store any part of either the immediate request or response. This directive applies to both private and shared caches. "<em class="bcp14">MUST NOT</em> store" in this context means that the cache <em class="bcp14">MUST NOT</em> intentionally store the information in non-volatile storage, and <em class="bcp14">MUST</em> make a best-effort attempt to remove the information from volatile storage as promptly as possible after forwarding it. 
     1382      </p> 
     1383      <p id="rfc.section.3.2.2.4.p.2">This directive is NOT a reliable or sufficient mechanism for ensuring privacy. In particular, malicious or compromised caches 
     1384         might not recognize or obey this directive, and communications networks might be vulnerable to eavesdropping. 
     1385      </p> 
     1386      <div id="rfc.iref.c.18"></div> 
     1387      <div id="rfc.iref.m.4"></div> 
     1388      <h4 id="rfc.section.3.2.2.5"><a href="#rfc.section.3.2.2.5">3.2.2.5</a>&nbsp;<a id="cache-response-directive.must-revalidate" href="#cache-response-directive.must-revalidate">must-revalidate</a></h4> 
     1389      <p id="rfc.section.3.2.2.5.p.1">The must-revalidate response directive indicates that once it has become stale, a cache <em class="bcp14">MUST NOT</em> use the response to satisfy subsequent requests without successful validation on the origin server. 
     1390      </p> 
     1391      <p id="rfc.section.3.2.2.5.p.2">The must-revalidate directive is necessary to support reliable operation for certain protocol features. In all circumstances 
     1392         a cache <em class="bcp14">MUST</em> obey the must-revalidate directive; in particular, if a cache cannot reach the origin server for any reason, it <em class="bcp14">MUST</em> generate a 504 (Gateway Timeout) response. 
     1393      </p> 
     1394      <p id="rfc.section.3.2.2.5.p.3">The must-revalidate directive ought to be used by servers if and only if failure to validate a request on the representation 
     1395         could result in incorrect operation, such as a silently unexecuted financial transaction. 
     1396      </p> 
     1397      <div id="rfc.iref.c.19"></div> 
     1398      <div id="rfc.iref.p.4"></div> 
     1399      <h4 id="rfc.section.3.2.2.6"><a href="#rfc.section.3.2.2.6">3.2.2.6</a>&nbsp;<a id="cache-response-directive.proxy-revalidate" href="#cache-response-directive.proxy-revalidate">proxy-revalidate</a></h4> 
     1400      <p id="rfc.section.3.2.2.6.p.1">The proxy-revalidate response directive has the same meaning as the must-revalidate response directive, except that it does 
     1401         not apply to private caches. 
     1402      </p> 
     1403      <div id="rfc.iref.c.20"></div> 
     1404      <div id="rfc.iref.m.5"></div> 
     1405      <h4 id="rfc.section.3.2.2.7"><a href="#rfc.section.3.2.2.7">3.2.2.7</a>&nbsp;<a id="cache-response-directive.max-age" href="#cache-response-directive.max-age">max-age</a></h4> 
     1406      <p id="rfc.section.3.2.2.7.p.1">Argument syntax: </p> 
    12861407      <ul class="empty"> 
    1287          <li>The no-transform request directive indicates that an intermediary (whether or not it implements a cache) <em class="bcp14">MUST NOT</em> change the Content-Encoding, Content-Range or Content-Type request header fields, nor the request representation. 
    1288          </li> 
    1289       </ul> 
    1290       <p id="rfc.section.3.2.1.p.8"> <dfn>only-if-cached</dfn>  <span id="rfc.iref.c.13"></span>  <span id="rfc.iref.o.1"></span>   
    1291       </p> 
     1408         <li> <a href="#delta-seconds" class="smpl">delta-seconds</a> (see <a href="#delta-seconds" title="Delta Seconds">Section&nbsp;1.5</a>) 
     1409         </li> 
     1410      </ul> 
     1411      <p id="rfc.section.3.2.2.7.p.2">The max-age response directive indicates that the response is to be considered stale after its age is greater than the specified 
     1412         number of seconds. 
     1413      </p> 
     1414      <p id="rfc.section.3.2.2.7.p.3"> <b>Note:</b> This directive uses the token form of the argument syntax; e.g., 'max-age=5', not 'max-age="5"'. Senders <em class="bcp14">SHOULD NOT</em> use the quoted-string form. 
     1415      </p> 
     1416      <div id="rfc.iref.c.21"></div> 
     1417      <div id="rfc.iref.s.4"></div> 
     1418      <h4 id="rfc.section.3.2.2.8"><a href="#rfc.section.3.2.2.8">3.2.2.8</a>&nbsp;<a id="cache-response-directive.s-maxage" href="#cache-response-directive.s-maxage">s-maxage</a></h4> 
     1419      <p id="rfc.section.3.2.2.8.p.1">Argument syntax: </p> 
    12921420      <ul class="empty"> 
    1293          <li>The only-if-cached request directive indicates that the client only wishes to obtain a stored response. If it receives this 
    1294             directive, a cache <em class="bcp14">SHOULD</em> either respond using a stored response that is consistent with the other constraints of the request, or respond with a 504 
    1295             (Gateway Timeout) status code. If a group of caches is being operated as a unified system with good internal connectivity, 
    1296             a member cache <em class="bcp14">MAY</em> forward such a request within that group of caches. 
    1297          </li> 
    1298       </ul> 
    1299       <h3 id="rfc.section.3.2.2"><a href="#rfc.section.3.2.2">3.2.2</a>&nbsp;<a id="cache-response-directive" href="#cache-response-directive">Response Cache-Control Directives</a></h3> 
    1300       <div id="rfc.figure.u.11"></div><pre class="inline"><span id="rfc.iref.g.6"></span>  <a href="#header.cache-control" class="smpl">cache-response-directive</a> = 
    1301        "public" 
    1302      / "private" [ "=" <a href="#notation" class="smpl">DQUOTE</a> 1#<a href="#abnf.dependencies" class="smpl">field-name</a> <a href="#notation" class="smpl">DQUOTE</a> ] 
    1303      / "no-cache" [ "=" <a href="#notation" class="smpl">DQUOTE</a> 1#<a href="#abnf.dependencies" class="smpl">field-name</a> <a href="#notation" class="smpl">DQUOTE</a> ] 
    1304      / "no-store" 
    1305      / "no-transform" 
    1306      / "must-revalidate" 
    1307      / "proxy-revalidate" 
    1308      / "max-age" "=" <a href="#delta-seconds" class="smpl">delta-seconds</a> 
    1309      / "s-maxage" "=" <a href="#delta-seconds" class="smpl">delta-seconds</a> 
    1310      / <a href="#header.cache-control" class="smpl">cache-extension</a> 
    1311 </pre><p id="rfc.section.3.2.2.p.2"> <dfn>public</dfn>  <span id="rfc.iref.c.14"></span>  <span id="rfc.iref.p.2"></span>   
    1312       </p> 
    1313       <ul class="empty"> 
    1314          <li>The public response directive indicates that a response whose associated request contains an 'Authentication' header <em class="bcp14">MAY</em> be stored (see <a href="#caching.authenticated.responses" title="Shared Caching of Authenticated Responses">Section&nbsp;2.7</a>). 
    1315          </li> 
    1316       </ul> 
    1317       <p id="rfc.section.3.2.2.p.3"> <dfn>private</dfn>  <span id="rfc.iref.c.15"></span>  <span id="rfc.iref.p.3"></span>   
    1318       </p> 
    1319       <ul class="empty"> 
    1320          <li>The private response directive indicates that the response message is intended for a single user and <em class="bcp14">MUST NOT</em> be stored by a shared cache. A private cache <em class="bcp14">MAY</em> store the response. 
    1321          </li> 
    1322          <li>If the private response directive specifies one or more field-names, this requirement is limited to the field-values associated 
    1323             with the listed response header fields. That is, a shared cache <em class="bcp14">MUST NOT</em> store the specified field-names(s), whereas it <em class="bcp14">MAY</em> store the remainder of the response message. 
    1324          </li> 
    1325          <li>The field-names given are not limited to the set of standard header fields defined by this specification. Field names are 
    1326             case-insensitive. 
    1327          </li> 
    1328          <li><b>Note:</b> This usage of the word "private" only controls where the response can be stored; it cannot ensure the privacy of the message 
    1329             content. Also, private response directives with field-names are often handled by implementations as if an unqualified private 
    1330             directive was received; i.e., the special handling for the qualified form is not widely implemented. 
    1331          </li> 
    1332       </ul> 
    1333       <p id="rfc.section.3.2.2.p.4"> <dfn>no-cache</dfn>  <span id="rfc.iref.c.16"></span>  <span id="rfc.iref.n.4"></span>   
    1334       </p> 
    1335       <ul class="empty"> 
    1336          <li>The no-cache response directive indicates that the response <em class="bcp14">MUST NOT</em> be used to satisfy a subsequent request without successful validation on the origin server. This allows an origin server to 
    1337             prevent a cache from using it to satisfy a request without contacting it, even by caches that have been configured to return 
    1338             stale responses. 
    1339          </li> 
    1340          <li>If the no-cache response directive specifies one or more field-names, then a cache <em class="bcp14">MAY</em> use the response to satisfy a subsequent request, subject to any other restrictions on caching. However, any header fields 
    1341             in the response that have the field-name(s) listed <em class="bcp14">MUST NOT</em> be sent in the response to a subsequent request without successful revalidation with the origin server. This allows an origin 
    1342             server to prevent the re-use of certain header fields in a response, while still allowing caching of the rest of the response. 
    1343          </li> 
    1344          <li>The field-names given are not limited to the set of standard header fields defined by this specification. Field names are 
    1345             case-insensitive. 
    1346          </li> 
    1347          <li><b>Note:</b> Most HTTP/1.0 caches will not recognize or obey this directive. Also, no-cache response directives with field-names are often 
    1348             handled by implementations as if an unqualified no-cache directive was received; i.e., the special handling for the qualified 
    1349             form is not widely implemented. 
    1350          </li> 
    1351       </ul> 
    1352       <p id="rfc.section.3.2.2.p.5"> <dfn>no-store</dfn>  <span id="rfc.iref.c.17"></span>  <span id="rfc.iref.n.5"></span>   
    1353       </p> 
    1354       <ul class="empty"> 
    1355          <li>The no-store response directive indicates that a cache <em class="bcp14">MUST NOT</em> store any part of either the immediate request or response. This directive applies to both private and shared caches. "<em class="bcp14">MUST NOT</em> store" in this context means that the cache <em class="bcp14">MUST NOT</em> intentionally store the information in non-volatile storage, and <em class="bcp14">MUST</em> make a best-effort attempt to remove the information from volatile storage as promptly as possible after forwarding it. 
    1356          </li> 
    1357          <li>This directive is NOT a reliable or sufficient mechanism for ensuring privacy. In particular, malicious or compromised caches 
    1358             might not recognize or obey this directive, and communications networks might be vulnerable to eavesdropping. 
    1359          </li> 
    1360       </ul> 
    1361       <p id="rfc.section.3.2.2.p.6"> <dfn>must-revalidate</dfn>  <span id="rfc.iref.c.18"></span>  <span id="rfc.iref.m.4"></span>   
    1362       </p> 
    1363       <ul class="empty"> 
    1364          <li>The must-revalidate response directive indicates that once it has become stale, a cache <em class="bcp14">MUST NOT</em> use the response to satisfy subsequent requests without successful validation on the origin server. 
    1365          </li> 
    1366          <li>The must-revalidate directive is necessary to support reliable operation for certain protocol features. In all circumstances 
    1367             a cache <em class="bcp14">MUST</em> obey the must-revalidate directive; in particular, if a cache cannot reach the origin server for any reason, it <em class="bcp14">MUST</em> generate a 504 (Gateway Timeout) response. 
    1368          </li> 
    1369          <li>The must-revalidate directive ought to be used by servers if and only if failure to validate a request on the representation 
    1370             could result in incorrect operation, such as a silently unexecuted financial transaction. 
    1371          </li> 
    1372       </ul> 
    1373       <p id="rfc.section.3.2.2.p.7"> <dfn>proxy-revalidate</dfn>  <span id="rfc.iref.c.19"></span>  <span id="rfc.iref.p.4"></span>   
    1374       </p> 
    1375       <ul class="empty"> 
    1376          <li>The proxy-revalidate response directive has the same meaning as the must-revalidate response directive, except that it does 
    1377             not apply to private caches. 
    1378          </li> 
    1379       </ul> 
    1380       <p id="rfc.section.3.2.2.p.8"> <dfn>max-age</dfn>  <span id="rfc.iref.c.20"></span>  <span id="rfc.iref.m.5"></span>   
    1381       </p> 
    1382       <ul class="empty"> 
    1383          <li>The max-age response directive indicates that the response is to be considered stale after its age is greater than the specified 
    1384             number of seconds. 
    1385          </li> 
    1386       </ul> 
    1387       <p id="rfc.section.3.2.2.p.9"> <dfn>s-maxage</dfn>  <span id="rfc.iref.c.21"></span>  <span id="rfc.iref.s.4"></span>   
    1388       </p> 
    1389       <ul class="empty"> 
    1390          <li>The s-maxage response directive indicates that, in shared caches, the maximum age specified by this directive overrides the 
    1391             maximum age specified by either the max-age directive or the Expires header field. The s-maxage directive also implies the 
    1392             semantics of the proxy-revalidate response directive. 
    1393          </li> 
    1394       </ul> 
    1395       <p id="rfc.section.3.2.2.p.10"> <dfn>no-transform</dfn>  <span id="rfc.iref.c.22"></span>  <span id="rfc.iref.n.6"></span>   
    1396       </p> 
    1397       <ul class="empty"> 
    1398          <li>The no-transform response directive indicates that an intermediary (regardless of whether it implements a cache) <em class="bcp14">MUST NOT</em> change the Content-Encoding, Content-Range or Content-Type response header fields, nor the response representation. 
    1399          </li> 
    1400       </ul> 
     1421         <li> <a href="#delta-seconds" class="smpl">delta-seconds</a> (see <a href="#delta-seconds" title="Delta Seconds">Section&nbsp;1.5</a>) 
     1422         </li> 
     1423      </ul> 
     1424      <p id="rfc.section.3.2.2.8.p.2">The s-maxage response directive indicates that, in shared caches, the maximum age specified by this directive overrides the 
     1425         maximum age specified by either the max-age directive or the Expires header field. The s-maxage directive also implies the 
     1426         semantics of the proxy-revalidate response directive. 
     1427      </p> 
     1428      <p id="rfc.section.3.2.2.8.p.3"> <b>Note:</b> This directive uses the token form of the argument syntax; e.g., 's-maxage=10', not 's-maxage="10"'. Senders <em class="bcp14">SHOULD NOT</em> use the quoted-string form. 
     1429      </p> 
     1430      <div id="rfc.iref.c.22"></div> 
     1431      <div id="rfc.iref.n.6"></div> 
     1432      <h4 id="rfc.section.3.2.2.9"><a href="#rfc.section.3.2.2.9">3.2.2.9</a>&nbsp;<a id="cache-response-directive.no-transform" href="#cache-response-directive.no-transform">no-transform</a></h4> 
     1433      <p id="rfc.section.3.2.2.9.p.1">The no-transform response directive indicates that an intermediary (regardless of whether it implements a cache) <em class="bcp14">MUST NOT</em> change the Content-Encoding, Content-Range or Content-Type response header fields, nor the response representation. 
     1434      </p> 
    14011435      <h3 id="rfc.section.3.2.3"><a href="#rfc.section.3.2.3">3.2.3</a>&nbsp;<a id="cache.control.extensions" href="#cache.control.extensions">Cache Control Extensions</a></h3> 
    14021436      <p id="rfc.section.3.2.3.p.1">The Cache-Control header field can be extended through the use of one or more cache-extension tokens, each with an optional 
     
    14161450         private response in their shared cache(s) could do so by including 
    14171451      </p> 
    1418       <div id="rfc.figure.u.12"></div><pre class="text">  Cache-Control: private, community="UCI" 
     1452      <div id="rfc.figure.u.10"></div><pre class="text">  Cache-Control: private, community="UCI" 
    14191453</pre><p id="rfc.section.3.2.3.p.5">A cache seeing this header field will act correctly even if the cache does not understand the community cache-extension, since 
    14201454         it will also see and understand the private directive and thus default to the safe behavior. 
     
    14451479      <p id="rfc.section.3.3.p.3">The field-value is an absolute date and time as defined by HTTP-date in <a href="p2-semantics.html#http.date" title="Date/Time Formats">Section 5.1</a> of <a href="#Part2" id="rfc.xref.Part2.7"><cite title="HTTP/1.1, part 2: Message Semantics">[Part2]</cite></a>; a sender <em class="bcp14">MUST</em> use the rfc1123-date format. 
    14461480      </p> 
    1447       <div id="rfc.figure.u.13"></div><pre class="inline"><span id="rfc.iref.g.7"></span>  <a href="#header.expires" class="smpl">Expires</a> = <a href="#abnf.dependencies" class="smpl">HTTP-date</a> 
    1448 </pre><div id="rfc.figure.u.14"></div>  
     1481      <div id="rfc.figure.u.11"></div><pre class="inline"><span id="rfc.iref.g.5"></span>  <a href="#header.expires" class="smpl">Expires</a> = <a href="#abnf.dependencies" class="smpl">HTTP-date</a> 
     1482</pre><div id="rfc.figure.u.12"></div>  
    14491483      <p>For example</p>  <pre class="text">  Expires: Thu, 01 Dec 1994 16:00:00 GMT 
    14501484</pre><p id="rfc.section.3.3.p.6">A cache <em class="bcp14">MUST</em> treat other invalid date formats, especially including the value "0", as in the past (i.e., "already expired"). 
     
    14731507         deprecates such extensions to improve interoperability. 
    14741508      </p> 
    1475       <div id="rfc.figure.u.15"></div><pre class="inline"><span id="rfc.iref.g.8"></span><span id="rfc.iref.g.9"></span><span id="rfc.iref.g.10"></span>  <a href="#header.pragma" class="smpl">Pragma</a>           = 1#<a href="#header.pragma" class="smpl">pragma-directive</a> 
     1509      <div id="rfc.figure.u.13"></div><pre class="inline"><span id="rfc.iref.g.6"></span><span id="rfc.iref.g.7"></span><span id="rfc.iref.g.8"></span>  <a href="#header.pragma" class="smpl">Pragma</a>           = 1#<a href="#header.pragma" class="smpl">pragma-directive</a> 
    14761510  <a href="#header.pragma" class="smpl">pragma-directive</a> = "no-cache" / <a href="#header.pragma" class="smpl">extension-pragma</a> 
    14771511  <a href="#header.pragma" class="smpl">extension-pragma</a> = <a href="#core.rules" class="smpl">token</a> [ "=" ( <a href="#core.rules" class="smpl">token</a> / <a href="#core.rules" class="smpl">quoted-string</a> ) ] 
     
    14811515         no-cache is purposefully omitted to target other Cache-Control response directives at HTTP/1.1 caches. For example: 
    14821516      </p> 
    1483       <div id="rfc.figure.u.16"></div> <pre class="text">GET / HTTP/1.1 
     1517      <div id="rfc.figure.u.14"></div> <pre class="text">GET / HTTP/1.1 
    14841518Host: www.example.com 
    14851519Cache-Control: max-age=30 
     
    15041538         the representation. 
    15051539      </p> 
    1506       <div id="rfc.figure.u.17"></div><pre class="inline"><span id="rfc.iref.g.11"></span>  <a href="#header.vary" class="smpl">Vary</a> = "*" / 1#<a href="#abnf.dependencies" class="smpl">field-name</a> 
     1540      <div id="rfc.figure.u.15"></div><pre class="inline"><span id="rfc.iref.g.9"></span>  <a href="#header.vary" class="smpl">Vary</a> = "*" / 1#<a href="#abnf.dependencies" class="smpl">field-name</a> 
    15071541</pre><p id="rfc.section.3.5.p.5">The set of header fields named by the Vary field value is known as the selecting header fields.</p> 
    15081542      <p id="rfc.section.3.5.p.6">A server <em class="bcp14">SHOULD</em> include a Vary header field with any cacheable response that is subject to server-driven negotiation. Doing so allows a cache 
     
    15311565         be applied to response messages. 
    15321566      </p> 
    1533       <div id="rfc.figure.u.18"></div><pre class="inline"><span id="rfc.iref.g.12"></span><span id="rfc.iref.g.13"></span><span id="rfc.iref.g.14"></span><span id="rfc.iref.g.15"></span><span id="rfc.iref.g.16"></span><span id="rfc.iref.g.17"></span>  <a href="#header.warning" class="smpl">Warning</a>       = 1#<a href="#header.warning" class="smpl">warning-value</a> 
     1567      <div id="rfc.figure.u.16"></div><pre class="inline"><span id="rfc.iref.g.10"></span><span id="rfc.iref.g.11"></span><span id="rfc.iref.g.12"></span><span id="rfc.iref.g.13"></span><span id="rfc.iref.g.14"></span><span id="rfc.iref.g.15"></span>  <a href="#header.warning" class="smpl">Warning</a>       = 1#<a href="#header.warning" class="smpl">warning-value</a> 
    15341568   
    15351569  <a href="#header.warning" class="smpl">warning-value</a> = <a href="#header.warning" class="smpl">warn-code</a> <a href="#notation" class="smpl">SP</a> <a href="#header.warning" class="smpl">warn-agent</a> <a href="#notation" class="smpl">SP</a> <a href="#header.warning" class="smpl">warn-text</a> 
     
    15701604         of its meaning. 
    15711605      </p> 
    1572       <div id="rfc.iref.78"></div> 
     1606      <div id="rfc.iref.76"></div> 
    15731607      <div id="rfc.iref.w.2"></div> 
    15741608      <h3 id="rfc.section.3.6.1"><a href="#rfc.section.3.6.1">3.6.1</a>&nbsp;<a id="warn.110" href="#warn.110">110 Response is Stale</a></h3> 
    15751609      <p id="rfc.section.3.6.1.p.1">A cache <em class="bcp14">SHOULD</em> include this whenever the returned response is stale. 
    15761610      </p> 
    1577       <div id="rfc.iref.79"></div> 
     1611      <div id="rfc.iref.77"></div> 
    15781612      <div id="rfc.iref.w.3"></div> 
    15791613      <h3 id="rfc.section.3.6.2"><a href="#rfc.section.3.6.2">3.6.2</a>&nbsp;<a id="warn.111" href="#warn.111">111 Revalidation Failed</a></h3> 
     
    15811615         the server. 
    15821616      </p> 
    1583       <div id="rfc.iref.80"></div> 
     1617      <div id="rfc.iref.78"></div> 
    15841618      <div id="rfc.iref.w.4"></div> 
    15851619      <h3 id="rfc.section.3.6.3"><a href="#rfc.section.3.6.3">3.6.3</a>&nbsp;<a id="warn.112" href="#warn.112">112 Disconnected Operation</a></h3> 
    15861620      <p id="rfc.section.3.6.3.p.1">A cache <em class="bcp14">SHOULD</em> include this if it is intentionally disconnected from the rest of the network for a period of time. 
    15871621      </p> 
    1588       <div id="rfc.iref.81"></div> 
     1622      <div id="rfc.iref.79"></div> 
    15891623      <div id="rfc.iref.w.5"></div> 
    15901624      <h3 id="rfc.section.3.6.4"><a href="#rfc.section.3.6.4">3.6.4</a>&nbsp;<a id="warn.113" href="#warn.113">113 Heuristic Expiration</a></h3> 
     
    15921626         hours. 
    15931627      </p> 
    1594       <div id="rfc.iref.82"></div> 
     1628      <div id="rfc.iref.80"></div> 
    15951629      <div id="rfc.iref.w.6"></div> 
    15961630      <h3 id="rfc.section.3.6.5"><a href="#rfc.section.3.6.5">3.6.5</a>&nbsp;<a id="warn.199" href="#warn.199">199 Miscellaneous Warning</a></h3> 
    15971631      <p id="rfc.section.3.6.5.p.1">The warning text can include arbitrary information to be presented to a human user, or logged. A system receiving this warning <em class="bcp14">MUST NOT</em> take any automated action, besides presenting the warning to the user. 
    15981632      </p> 
    1599       <div id="rfc.iref.83"></div> 
     1633      <div id="rfc.iref.81"></div> 
    16001634      <div id="rfc.iref.w.7"></div> 
    16011635      <h3 id="rfc.section.3.6.6"><a href="#rfc.section.3.6.6">3.6.6</a>&nbsp;<a id="warn.214" href="#warn.214">214 Transformation Applied</a></h3> 
     
    16031637         or modifying the representation data, unless this Warning code already appears in the response. 
    16041638      </p> 
    1605       <div id="rfc.iref.84"></div> 
     1639      <div id="rfc.iref.82"></div> 
    16061640      <div id="rfc.iref.w.8"></div> 
    16071641      <h3 id="rfc.section.3.6.7"><a href="#rfc.section.3.6.7">3.6.7</a>&nbsp;<a id="warn.299" href="#warn.299">299 Miscellaneous Persistent Warning</a></h3> 
     
    16491683               <tr> 
    16501684                  <td class="left">max-age</td> 
    1651                   <td class="left"> <a href="#cache-request-directive" title="Request Cache-Control Directives">Section&nbsp;3.2.1</a>, <a href="#cache-response-directive" title="Response Cache-Control Directives">Section&nbsp;3.2.2</a>  
     1685                  <td class="left"> <a href="#cache-request-directive.max-age" title="max-age">Section&nbsp;3.2.1.3</a>, <a href="#cache-response-directive.max-age" title="max-age">Section&nbsp;3.2.2.7</a>  
    16521686                  </td> 
    16531687               </tr> 
    16541688               <tr> 
    16551689                  <td class="left">max-stale</td> 
    1656                   <td class="left"> <a href="#cache-request-directive" title="Request Cache-Control Directives">Section&nbsp;3.2.1</a>  
     1690                  <td class="left"> <a href="#cache-request-directive.max-stale" title="max-stale">Section&nbsp;3.2.1.4</a>  
    16571691                  </td> 
    16581692               </tr> 
    16591693               <tr> 
    16601694                  <td class="left">min-fresh</td> 
    1661                   <td class="left"> <a href="#cache-request-directive" title="Request Cache-Control Directives">Section&nbsp;3.2.1</a>  
     1695                  <td class="left"> <a href="#cache-request-directive.min-fresh" title="min-fresh">Section&nbsp;3.2.1.5</a>  
    16621696                  </td> 
    16631697               </tr> 
    16641698               <tr> 
    16651699                  <td class="left">must-revalidate</td> 
    1666                   <td class="left"> <a href="#cache-response-directive" title="Response Cache-Control Directives">Section&nbsp;3.2.2</a>  
     1700                  <td class="left"> <a href="#cache-response-directive.must-revalidate" title="must-revalidate">Section&nbsp;3.2.2.5</a>  
    16671701                  </td> 
    16681702               </tr> 
    16691703               <tr> 
    16701704                  <td class="left">no-cache</td> 
    1671                   <td class="left"> <a href="#cache-request-directive" title="Request Cache-Control Directives">Section&nbsp;3.2.1</a>, <a href="#cache-response-directive" title="Response Cache-Control Directives">Section&nbsp;3.2.2</a>  
     1705                  <td class="left"> <a href="#cache-request-directive.no-cache" title="no-cache">Section&nbsp;3.2.1.1</a>, <a href="#cache-response-directive.no-cache" title="no-cache">Section&nbsp;3.2.2.3</a>  
    16721706                  </td> 
    16731707               </tr> 
    16741708               <tr> 
    16751709                  <td class="left">no-store</td> 
    1676                   <td class="left"> <a href="#cache-request-directive" title="Request Cache-Control Directives">Section&nbsp;3.2.1</a>, <a href="#cache-response-directive" title="Response Cache-Control Directives">Section&nbsp;3.2.2</a>  
     1710                  <td class="left"> <a href="#cache-request-directive.no-store" title="no-store">Section&nbsp;3.2.1.2</a>, <a href="#cache-response-directive.no-store" title="no-store">Section&nbsp;3.2.2.4</a>  
    16771711                  </td> 
    16781712               </tr> 
    16791713               <tr> 
    16801714                  <td class="left">no-transform</td> 
    1681                   <td class="left"> <a href="#cache-request-directive" title="Request Cache-Control Directives">Section&nbsp;3.2.1</a>, <a href="#cache-response-directive" title="Response Cache-Control Directives">Section&nbsp;3.2.2</a>  
     1715                  <td class="left"> <a href="#cache-request-directive.no-transform" title="no-transform">Section&nbsp;3.2.1.6</a>, <a href="#cache-response-directive.no-transform" title="no-transform">Section&nbsp;3.2.2.9</a>  
    16821716                  </td> 
    16831717               </tr> 
    16841718               <tr> 
    16851719                  <td class="left">only-if-cached</td> 
    1686                   <td class="left"> <a href="#cache-request-directive" title="Request Cache-Control Directives">Section&nbsp;3.2.1</a>  
     1720                  <td class="left"> <a href="#cache-request-directive.only-if-cached" title="only-if-cached">Section&nbsp;3.2.1.7</a>  
    16871721                  </td> 
    16881722               </tr> 
    16891723               <tr> 
    16901724                  <td class="left">private</td> 
    1691                   <td class="left"> <a href="#cache-response-directive" title="Response Cache-Control Directives">Section&nbsp;3.2.2</a>  
     1725                  <td class="left"> <a href="#cache-response-directive.private" title="private">Section&nbsp;3.2.2.2</a>  
    16921726                  </td> 
    16931727               </tr> 
    16941728               <tr> 
    16951729                  <td class="left">proxy-revalidate</td> 
    1696                   <td class="left"> <a href="#cache-response-directive" title="Response Cache-Control Directives">Section&nbsp;3.2.2</a>  
     1730                  <td class="left"> <a href="#cache-response-directive.proxy-revalidate" title="proxy-revalidate">Section&nbsp;3.2.2.6</a>  
    16971731                  </td> 
    16981732               </tr> 
    16991733               <tr> 
    17001734                  <td class="left">public</td> 
    1701                   <td class="left"> <a href="#cache-response-directive" title="Response Cache-Control Directives">Section&nbsp;3.2.2</a>  
     1735                  <td class="left"> <a href="#cache-response-directive.only-if-cached" title="public">Section&nbsp;3.2.2.1</a>  
    17021736                  </td> 
    17031737               </tr> 
    17041738               <tr> 
    17051739                  <td class="left">s-maxage</td> 
    1706                   <td class="left"> <a href="#cache-response-directive" title="Response Cache-Control Directives">Section&nbsp;3.2.2</a>  
     1740                  <td class="left"> <a href="#cache-response-directive.s-maxage" title="s-maxage">Section&nbsp;3.2.2.8</a>  
    17071741                  </td> 
    17081742               </tr> 
     
    19501984      </p> 
    19511985      <h1 id="rfc.section.B"><a href="#rfc.section.B">B.</a>&nbsp;<a id="collected.abnf" href="#collected.abnf">Collected ABNF</a></h1> 
    1952       <div id="rfc.figure.u.19"></div> <pre class="inline"><a href="#header.age" class="smpl">Age</a> = delta-seconds 
     1986      <div id="rfc.figure.u.17"></div> <pre class="inline"><a href="#header.age" class="smpl">Age</a> = delta-seconds 
    19531987 
    19541988<a href="#header.cache-control" class="smpl">Cache-Control</a> = *( "," OWS ) cache-directive *( OWS "," [ OWS 
     
    19702004 ) 
    19712005 
    1972 <a href="#header.cache-control" class="smpl">cache-directive</a> = cache-request-directive / cache-response-directive 
    1973 <a href="#header.cache-control" class="smpl">cache-extension</a> = token [ "=" ( token / quoted-string ) ] 
    1974 <a href="#header.cache-control" class="smpl">cache-request-directive</a> = "no-cache" / "no-store" / ( "max-age=" 
    1975  delta-seconds ) / ( "max-stale" [ "=" delta-seconds ] ) / ( 
    1976  "min-fresh=" delta-seconds ) / "no-transform" / "only-if-cached" / 
    1977  cache-extension 
    1978 <a href="#header.cache-control" class="smpl">cache-response-directive</a> = "public" / ( "private" [ "=" DQUOTE *( "," 
    1979  OWS ) field-name *( OWS "," [ OWS field-name ] ) DQUOTE ] ) / ( 
    1980  "no-cache" [ "=" DQUOTE *( "," OWS ) field-name *( OWS "," [ OWS 
    1981  field-name ] ) DQUOTE ] ) / "no-store" / "no-transform" / 
    1982  "must-revalidate" / "proxy-revalidate" / ( "max-age=" delta-seconds 
    1983  ) / ( "s-maxage=" delta-seconds ) / cache-extension 
     2006<a href="#header.cache-control" class="smpl">cache-directive</a> = token [ "=" ( token / quoted-string ) ] 
    19842007 
    19852008<a href="#delta-seconds" class="smpl">delta-seconds</a> = 1*DIGIT 
     
    20052028<a href="#header.warning" class="smpl">warning-value</a> = warn-code SP warn-agent SP warn-text [ SP warn-date 
    20062029 ] 
    2007 </pre> <div id="rfc.figure.u.20"></div> 
     2030</pre> <div id="rfc.figure.u.18"></div> 
    20082031      <p>ABNF diagnostics:</p><pre class="inline">; Age defined but not used 
    20092032; Cache-Control defined but not used 
     
    20182041      <p id="rfc.section.C.1.p.1">Closed issues: </p> 
    20192042      <ul> 
     2043         <li> &lt;<a href="http://tools.ietf.org/wg/httpbis/trac/ticket/307">http://tools.ietf.org/wg/httpbis/trac/ticket/307</a>&gt;: "untangle Cache-Control ABNF" 
     2044         </li> 
    20202045         <li> &lt;<a href="http://tools.ietf.org/wg/httpbis/trac/ticket/355">http://tools.ietf.org/wg/httpbis/trac/ticket/355</a>&gt;: "Case sensitivity of header fields in CC values" 
    20212046         </li> 
     
    20312056         <ul class="ind"> 
    20322057            <li><a id="rfc.index.1" href="#rfc.index.1"><b>1</b></a><ul> 
    2033                   <li>110 Response is Stale (warn code)&nbsp;&nbsp;<a href="#rfc.iref.78"><b>3.6.1</b></a>, <a href="#rfc.xref.warn.110.1">5.2</a></li> 
    2034                   <li>111 Revalidation Failed (warn code)&nbsp;&nbsp;<a href="#rfc.iref.79"><b>3.6.2</b></a>, <a href="#rfc.xref.warn.111.1">5.2</a></li> 
    2035                   <li>112 Disconnected Operation (warn code)&nbsp;&nbsp;<a href="#rfc.iref.80"><b>3.6.3</b></a>, <a href="#rfc.xref.warn.112.1">5.2</a></li> 
    2036                   <li>113 Heuristic Expiration (warn code)&nbsp;&nbsp;<a href="#rfc.iref.81"><b>3.6.4</b></a>, <a href="#rfc.xref.warn.113.1">5.2</a></li> 
    2037                   <li>199 Miscellaneous Warning (warn code)&nbsp;&nbsp;<a href="#rfc.iref.82"><b>3.6.5</b></a>, <a href="#rfc.xref.warn.199.1">5.2</a></li> 
     2058                  <li>110 Response is Stale (warn code)&nbsp;&nbsp;<a href="#rfc.iref.76"><b>3.6.1</b></a>, <a href="#rfc.xref.warn.110.1">5.2</a></li> 
     2059                  <li>111 Revalidation Failed (warn code)&nbsp;&nbsp;<a href="#rfc.iref.77"><b>3.6.2</b></a>, <a href="#rfc.xref.warn.111.1">5.2</a></li> 
     2060                  <li>112 Disconnected Operation (warn code)&nbsp;&nbsp;<a href="#rfc.iref.78"><b>3.6.3</b></a>, <a href="#rfc.xref.warn.112.1">5.2</a></li> 
     2061                  <li>113 Heuristic Expiration (warn code)&nbsp;&nbsp;<a href="#rfc.iref.79"><b>3.6.4</b></a>, <a href="#rfc.xref.warn.113.1">5.2</a></li> 
     2062                  <li>199 Miscellaneous Warning (warn code)&nbsp;&nbsp;<a href="#rfc.iref.80"><b>3.6.5</b></a>, <a href="#rfc.xref.warn.199.1">5.2</a></li> 
    20382063               </ul> 
    20392064            </li> 
    20402065            <li><a id="rfc.index.2" href="#rfc.index.2"><b>2</b></a><ul> 
    2041                   <li>214 Transformation Applied (warn code)&nbsp;&nbsp;<a href="#rfc.iref.83"><b>3.6.6</b></a>, <a href="#rfc.xref.warn.214.1">5.2</a></li> 
    2042                   <li>299 Miscellaneous Persistent Warning (warn code)&nbsp;&nbsp;<a href="#rfc.iref.84"><b>3.6.7</b></a>, <a href="#rfc.xref.warn.299.1">5.2</a></li> 
     2066                  <li>214 Transformation Applied (warn code)&nbsp;&nbsp;<a href="#rfc.iref.81"><b>3.6.6</b></a>, <a href="#rfc.xref.warn.214.1">5.2</a></li> 
     2067                  <li>299 Miscellaneous Persistent Warning (warn code)&nbsp;&nbsp;<a href="#rfc.iref.82"><b>3.6.7</b></a>, <a href="#rfc.xref.warn.299.1">5.2</a></li> 
    20432068               </ul> 
    20442069            </li> 
     
    20522077                  <li>Cache Directives&nbsp;&nbsp; 
    20532078                     <ul> 
    2054                         <li>max-age&nbsp;&nbsp;<a href="#rfc.iref.c.9"><b>3.2.1</b></a>, <a href="#rfc.iref.c.20"><b>3.2.2</b></a></li> 
    2055                         <li>max-stale&nbsp;&nbsp;<a href="#rfc.iref.c.10"><b>3.2.1</b></a></li> 
    2056                         <li>min-fresh&nbsp;&nbsp;<a href="#rfc.iref.c.11"><b>3.2.1</b></a></li> 
    2057                         <li>must-revalidate&nbsp;&nbsp;<a href="#rfc.iref.c.18"><b>3.2.2</b></a></li> 
    2058                         <li>no-cache&nbsp;&nbsp;<a href="#rfc.iref.c.7"><b>3.2.1</b></a>, <a href="#rfc.iref.c.16"><b>3.2.2</b></a></li> 
    2059                         <li>no-store&nbsp;&nbsp;<a href="#rfc.iref.c.8"><b>3.2.1</b></a>, <a href="#rfc.iref.c.17"><b>3.2.2</b></a></li> 
    2060                         <li>no-transform&nbsp;&nbsp;<a href="#rfc.iref.c.12"><b>3.2.1</b></a>, <a href="#rfc.iref.c.22"><b>3.2.2</b></a></li> 
    2061                         <li>only-if-cached&nbsp;&nbsp;<a href="#rfc.iref.c.13"><b>3.2.1</b></a></li> 
    2062                         <li>private&nbsp;&nbsp;<a href="#rfc.iref.c.15"><b>3.2.2</b></a></li> 
    2063                         <li>proxy-revalidate&nbsp;&nbsp;<a href="#rfc.iref.c.19"><b>3.2.2</b></a></li> 
    2064                         <li>public&nbsp;&nbsp;<a href="#rfc.iref.c.14"><b>3.2.2</b></a></li> 
    2065                         <li>s-maxage&nbsp;&nbsp;<a href="#rfc.iref.c.21"><b>3.2.2</b></a></li> 
     2079                        <li>max-age&nbsp;&nbsp;<a href="#rfc.iref.c.9"><b>3.2.1.3</b></a>, <a href="#rfc.iref.c.20"><b>3.2.2.7</b></a></li> 
     2080                        <li>max-stale&nbsp;&nbsp;<a href="#rfc.iref.c.10"><b>3.2.1.4</b></a></li> 
     2081                        <li>min-fresh&nbsp;&nbsp;<a href="#rfc.iref.c.11"><b>3.2.1.5</b></a></li> 
     2082                        <li>must-revalidate&nbsp;&nbsp;<a href="#rfc.iref.c.18"><b>3.2.2.5</b></a></li> 
     2083                        <li>no-cache&nbsp;&nbsp;<a href="#rfc.iref.c.7"><b>3.2.1.1</b></a>, <a href="#rfc.iref.c.16"><b>3.2.2.3</b></a></li> 
     2084                        <li>no-store&nbsp;&nbsp;<a href="#rfc.iref.c.8"><b>3.2.1.2</b></a>, <a href="#rfc.iref.c.17"><b>3.2.2.4</b></a></li> 
     2085                        <li>no-transform&nbsp;&nbsp;<a href="#rfc.iref.c.12"><b>3.2.1.6</b></a>, <a href="#rfc.iref.c.22"><b>3.2.2.9</b></a></li> 
     2086                        <li>only-if-cached&nbsp;&nbsp;<a href="#rfc.iref.c.13"><b>3.2.1.7</b></a></li> 
     2087                        <li>private&nbsp;&nbsp;<a href="#rfc.iref.c.15"><b>3.2.2.2</b></a></li> 
     2088                        <li>proxy-revalidate&nbsp;&nbsp;<a href="#rfc.iref.c.19"><b>3.2.2.6</b></a></li> 
     2089                        <li>public&nbsp;&nbsp;<a href="#rfc.iref.c.14"><b>3.2.2.1</b></a></li> 
     2090                        <li>s-maxage&nbsp;&nbsp;<a href="#rfc.iref.c.21"><b>3.2.2.8</b></a></li> 
    20662091                     </ul> 
    20672092                  </li> 
     
    20882113                        <li><tt>Age</tt>&nbsp;&nbsp;<a href="#rfc.iref.g.2"><b>3.1</b></a></li> 
    20892114                        <li><tt>Cache-Control</tt>&nbsp;&nbsp;<a href="#rfc.iref.g.3"><b>3.2</b></a></li> 
    2090                         <li><tt>cache-extension</tt>&nbsp;&nbsp;<a href="#rfc.iref.g.4"><b>3.2</b></a></li> 
    2091                         <li><tt>cache-request-directive</tt>&nbsp;&nbsp;<a href="#rfc.iref.g.5"><b>3.2.1</b></a></li> 
    2092                         <li><tt>cache-response-directive</tt>&nbsp;&nbsp;<a href="#rfc.iref.g.6"><b>3.2.2</b></a></li> 
     2115                        <li><tt>cache-directive</tt>&nbsp;&nbsp;<a href="#rfc.iref.g.4"><b>3.2</b></a></li> 
    20932116                        <li><tt>delta-seconds</tt>&nbsp;&nbsp;<a href="#rfc.iref.g.1"><b>1.5</b></a></li> 
    2094                         <li><tt>Expires</tt>&nbsp;&nbsp;<a href="#rfc.iref.g.7"><b>3.3</b></a></li> 
    2095                         <li><tt>extension-pragma</tt>&nbsp;&nbsp;<a href="#rfc.iref.g.10"><b>3.4</b></a></li> 
    2096                         <li><tt>Pragma</tt>&nbsp;&nbsp;<a href="#rfc.iref.g.8"><b>3.4</b></a></li> 
    2097                         <li><tt>pragma-directive</tt>&nbsp;&nbsp;<a href="#rfc.iref.g.9"><b>3.4</b></a></li> 
    2098                         <li><tt>Vary</tt>&nbsp;&nbsp;<a href="#rfc.iref.g.11"><b>3.5</b></a></li> 
    2099                         <li><tt>warn-agent</tt>&nbsp;&nbsp;<a href="#rfc.iref.g.15"><b>3.6</b></a></li> 
    2100                         <li><tt>warn-code</tt>&nbsp;&nbsp;<a href="#rfc.iref.g.14"><b>3.6</b></a></li> 
    2101                         <li><tt>warn-date</tt>&nbsp;&nbsp;<a href="#rfc.iref.g.17"><b>3.6</b></a></li> 
    2102                         <li><tt>warn-text</tt>&nbsp;&nbsp;<a href="#rfc.iref.g.16"><b>3.6</b></a></li> 
    2103                         <li><tt>Warning</tt>&nbsp;&nbsp;<a href="#rfc.iref.g.12"><b>3.6</b></a></li> 
    2104                         <li><tt>warning-value</tt>&nbsp;&nbsp;<a href="#rfc.iref.g.13"><b>3.6</b></a></li> 
     2117                        <li><tt>Expires</tt>&nbsp;&nbsp;<a href="#rfc.iref.g.5"><b>3.3</b></a></li> 
     2118                        <li><tt>extension-pragma</tt>&nbsp;&nbsp;<a href="#rfc.iref.g.8"><b>3.4</b></a></li> 
     2119                        <li><tt>Pragma</tt>&nbsp;&nbsp;<a href="#rfc.iref.g.6"><b>3.4</b></a></li> 
     2120                        <li><tt>pragma-directive</tt>&nbsp;&nbsp;<a href="#rfc.iref.g.7"><b>3.4</b></a></li> 
     2121                        <li><tt>Vary</tt>&nbsp;&nbsp;<a href="#rfc.iref.g.9"><b>3.5</b></a></li> 
     2122                        <li><tt>warn-agent</tt>&nbsp;&nbsp;<a href="#rfc.iref.g.13"><b>3.6</b></a></li> 
     2123                        <li><tt>warn-code</tt>&nbsp;&nbsp;<a href="#rfc.iref.g.12"><b>3.6</b></a></li> 
     2124                        <li><tt>warn-date</tt>&nbsp;&nbsp;<a href="#rfc.iref.g.15"><b>3.6</b></a></li> 
     2125                        <li><tt>warn-text</tt>&nbsp;&nbsp;<a href="#rfc.iref.g.14"><b>3.6</b></a></li> 
     2126                        <li><tt>Warning</tt>&nbsp;&nbsp;<a href="#rfc.iref.g.10"><b>3.6</b></a></li> 
     2127                        <li><tt>warning-value</tt>&nbsp;&nbsp;<a href="#rfc.iref.g.11"><b>3.6</b></a></li> 
    21052128                     </ul> 
    21062129                  </li> 
     
    21242147                  <li>max-age&nbsp;&nbsp; 
    21252148                     <ul> 
    2126                         <li>Cache Directive&nbsp;&nbsp;<a href="#rfc.iref.m.1"><b>3.2.1</b></a>, <a href="#rfc.iref.m.5"><b>3.2.2</b></a></li> 
     2149                        <li>Cache Directive&nbsp;&nbsp;<a href="#rfc.iref.m.1"><b>3.2.1.3</b></a>, <a href="#rfc.iref.m.5"><b>3.2.2.7</b></a></li> 
    21272150                     </ul> 
    21282151                  </li> 
    21292152                  <li>max-stale&nbsp;&nbsp; 
    21302153                     <ul> 
    2131                         <li>Cache Directive&nbsp;&nbsp;<a href="#rfc.iref.m.2"><b>3.2.1</b></a></li> 
     2154                        <li>Cache Directive&nbsp;&nbsp;<a href="#rfc.iref.m.2"><b>3.2.1.4</b></a></li> 
    21322155                     </ul> 
    21332156                  </li> 
    21342157                  <li>min-fresh&nbsp;&nbsp; 
    21352158                     <ul> 
    2136                         <li>Cache Directive&nbsp;&nbsp;<a href="#rfc.iref.m.3"><b>3.2.1</b></a></li> 
     2159                        <li>Cache Directive&nbsp;&nbsp;<a href="#rfc.iref.m.3"><b>3.2.1.5</b></a></li> 
    21372160                     </ul> 
    21382161                  </li> 
    21392162                  <li>must-revalidate&nbsp;&nbsp; 
    21402163                     <ul> 
    2141                         <li>Cache Directive&nbsp;&nbsp;<a href="#rfc.iref.m.4"><b>3.2.2</b></a></li> 
     2164                        <li>Cache Directive&nbsp;&nbsp;<a href="#rfc.iref.m.4"><b>3.2.2.5</b></a></li> 
    21422165                     </ul> 
    21432166                  </li> 
     
    21472170                  <li>no-cache&nbsp;&nbsp; 
    21482171                     <ul> 
    2149                         <li>Cache Directive&nbsp;&nbsp;<a href="#rfc.iref.n.1"><b>3.2.1</b></a>, <a href="#rfc.iref.n.4"><b>3.2.2</b></a></li> 
     2172                        <li>Cache Directive&nbsp;&nbsp;<a href="#rfc.iref.n.1"><b>3.2.1.1</b></a>, <a href="#rfc.iref.n.4"><b>3.2.2.3</b></a></li> 
    21502173                     </ul> 
    21512174                  </li> 
    21522175                  <li>no-store&nbsp;&nbsp; 
    21532176                     <ul> 
    2154                         <li>Cache Directive&nbsp;&nbsp;<a href="#rfc.iref.n.2"><b>3.2.1</b></a>, <a href="#rfc.iref.n.5"><b>3.2.2</b></a></li> 
     2177                        <li>Cache Directive&nbsp;&nbsp;<a href="#rfc.iref.n.2"><b>3.2.1.2</b></a>, <a href="#rfc.iref.n.5"><b>3.2.2.4</b></a></li> 
    21552178                     </ul> 
    21562179                  </li> 
    21572180                  <li>no-transform&nbsp;&nbsp; 
    21582181                     <ul> 
    2159                         <li>Cache Directive&nbsp;&nbsp;<a href="#rfc.iref.n.3"><b>3.2.1</b></a>, <a href="#rfc.iref.n.6"><b>3.2.2</b></a></li> 
     2182                        <li>Cache Directive&nbsp;&nbsp;<a href="#rfc.iref.n.3"><b>3.2.1.6</b></a>, <a href="#rfc.iref.n.6"><b>3.2.2.9</b></a></li> 
    21602183                     </ul> 
    21612184                  </li> 
     
    21652188                  <li>only-if-cached&nbsp;&nbsp; 
    21662189                     <ul> 
    2167                         <li>Cache Directive&nbsp;&nbsp;<a href="#rfc.iref.o.1"><b>3.2.1</b></a></li> 
     2190                        <li>Cache Directive&nbsp;&nbsp;<a href="#rfc.iref.o.1"><b>3.2.1.7</b></a></li> 
    21682191                     </ul> 
    21692192                  </li> 
     
    22082231                  <li>private&nbsp;&nbsp; 
    22092232                     <ul> 
    2210                         <li>Cache Directive&nbsp;&nbsp;<a href="#rfc.iref.p.3"><b>3.2.2</b></a></li> 
     2233                        <li>Cache Directive&nbsp;&nbsp;<a href="#rfc.iref.p.3"><b>3.2.2.2</b></a></li> 
    22112234                     </ul> 
    22122235                  </li> 
     
    22142237                  <li>proxy-revalidate&nbsp;&nbsp; 
    22152238                     <ul> 
    2216                         <li>Cache Directive&nbsp;&nbsp;<a href="#rfc.iref.p.4"><b>3.2.2</b></a></li> 
     2239                        <li>Cache Directive&nbsp;&nbsp;<a href="#rfc.iref.p.4"><b>3.2.2.6</b></a></li> 
    22172240                     </ul> 
    22182241                  </li> 
    22192242                  <li>public&nbsp;&nbsp; 
    22202243                     <ul> 
    2221                         <li>Cache Directive&nbsp;&nbsp;<a href="#rfc.iref.p.2"><b>3.2.2</b></a></li> 
     2244                        <li>Cache Directive&nbsp;&nbsp;<a href="#rfc.iref.p.2"><b>3.2.2.1</b></a></li> 
    22222245                     </ul> 
    22232246                  </li> 
     
    22502273                  <li>s-maxage&nbsp;&nbsp; 
    22512274                     <ul> 
    2252                         <li>Cache Directive&nbsp;&nbsp;<a href="#rfc.iref.s.4"><b>3.2.2</b></a></li> 
     2275                        <li>Cache Directive&nbsp;&nbsp;<a href="#rfc.iref.s.4"><b>3.2.2.8</b></a></li> 
    22532276                     </ul> 
    22542277                  </li> 
  • draft-ietf-httpbis/latest/p6-cache.xml

    r1692 r1695  
    11861186   <x:anchor-alias value="Cache-Control"/> 
    11871187   <x:anchor-alias value="cache-directive"/> 
    1188    <x:anchor-alias value="cache-extension"/> 
    1189    <x:anchor-alias value="cache-request-directive"/> 
    1190    <x:anchor-alias value="cache-response-directive"/> 
    11911188<t> 
    11921189   The "Cache-Control" header field is used to specify directives for 
     
    12151212   target a directive to a specific cache. 
    12161213</t> 
    1217 <t>Cache directives are identified by a token, to be compared case-insensitively, and have an optional argument.</t> 
    1218 <figure><artwork type="abnf2616"><iref primary="true" item="Grammar" subitem="Cache-Control"/><iref primary="true" item="Grammar" subitem="cache-extension"/> 
     1214<t> 
     1215   Cache directives are identified by a token, to be compared case-insensitively, 
     1216   and have an optional argument, that can use both token and quoted-string 
     1217   syntax. For the directives defined below that define arguments, recipients 
     1218   ought to accept both forms, even if one is documented to be preferred. For 
     1219   any directive not defined by this specification, recipients &MUST; accept 
     1220   both forms.  
     1221</t> 
     1222<figure><artwork type="abnf2616"><iref primary="true" item="Grammar" subitem="Cache-Control"/><iref primary="true" item="Grammar" subitem="cache-directive"/> 
    12191223  <x:ref>Cache-Control</x:ref>   = 1#<x:ref>cache-directive</x:ref> 
    12201224 
    1221   <x:ref>cache-directive</x:ref> = <x:ref>cache-request-directive</x:ref> 
    1222      / <x:ref>cache-response-directive</x:ref> 
    1223  
    1224   <x:ref>cache-extension</x:ref> = <x:ref>token</x:ref> [ "=" ( <x:ref>token</x:ref> / <x:ref>quoted-string</x:ref> ) ] 
     1225  <x:ref>cache-directive</x:ref> = <x:ref>token</x:ref> [ "=" ( <x:ref>token</x:ref> / <x:ref>quoted-string</x:ref> ) ] 
    12251226</artwork></figure> 
     1227<t> 
     1228   For the cache directives defined below, no argument is defined (nor allowed) 
     1229   otherwise stated otherwise. 
     1230</t> 
    12261231 
    12271232<section anchor="cache-request-directive"  
    12281233   title="Request Cache-Control Directives"> 
    1229    <x:anchor-alias value="cache-request-directive" /> 
    1230  
    1231 <figure><artwork type="abnf2616"><iref item="Grammar" primary="true"  
    1232    subitem="cache-request-directive" /> 
    1233   <x:ref>cache-request-directive</x:ref> = 
    1234        "no-cache" 
    1235      / "no-store" 
    1236      / "max-age" "=" <x:ref>delta-seconds</x:ref> 
    1237      / "max-stale" [ "=" <x:ref>delta-seconds</x:ref> ] 
    1238      / "min-fresh" "=" <x:ref>delta-seconds</x:ref> 
    1239      / "no-transform" 
    1240      / "only-if-cached" 
    1241      / <x:ref>cache-extension</x:ref> 
    1242 </artwork></figure> 
    1243  
    1244 <t> 
    1245    <x:dfn>no-cache</x:dfn> 
     1234 
     1235<section title="no-cache" anchor="cache-request-directive.no-cache"> 
    12461236   <iref item="Cache Directives" primary="true" subitem="no-cache" /> 
    12471237   <iref item="no-cache" primary="true" subitem="Cache Directive" /> 
    1248    <list> 
    1249       <t>The no-cache request directive indicates that a cache &MUST-NOT;  
    1250       use a stored response to satisfy the request without successful  
    1251       validation on the origin server.</t>  
    1252    </list> 
    1253 </t> 
    1254 <t> 
    1255    <x:dfn>no-store</x:dfn> 
     1238<t> 
     1239   The no-cache request directive indicates that a cache &MUST-NOT;  
     1240   use a stored response to satisfy the request without successful  
     1241   validation on the origin server. 
     1242</t> 
     1243</section> 
     1244  
     1245<section title="no-store" anchor="cache-request-directive.no-store"> 
    12561246   <iref item="Cache Directives" primary="true" subitem="no-store" /> 
    12571247   <iref item="no-store" primary="true" subitem="Cache Directive" /> 
    1258    <list> 
    1259       <t>The no-store request directive indicates that a cache &MUST-NOT; 
    1260       store any part of either this request or any response to it. This 
    1261       directive applies to both private and shared caches. "&MUST-NOT; 
    1262       store" in this context means that the cache &MUST-NOT; intentionally 
    1263       store the information in non-volatile storage, and &MUST; make a 
    1264       best-effort attempt to remove the information from volatile storage as 
    1265       promptly as possible after forwarding it.</t> 
    1266       <t>This directive is NOT a reliable or sufficient mechanism for ensuring 
    1267       privacy. In particular, malicious or compromised caches might not 
    1268       recognize or obey this directive, and communications networks might be 
    1269       vulnerable to eavesdropping.</t> 
    1270       <t>Note that if a request containing this directive is satisfied from a 
    1271       cache, the no-store request directive does not apply to the already 
    1272       stored response.</t> 
    1273    </list> 
    1274 </t> 
    1275 <t> 
    1276    <x:dfn>max-age</x:dfn> 
     1248<t> 
     1249   The no-store request directive indicates that a cache &MUST-NOT; 
     1250   store any part of either this request or any response to it. This 
     1251   directive applies to both private and shared caches. "&MUST-NOT; 
     1252   store" in this context means that the cache &MUST-NOT; intentionally 
     1253   store the information in non-volatile storage, and &MUST; make a 
     1254   best-effort attempt to remove the information from volatile storage as 
     1255   promptly as possible after forwarding it. 
     1256</t> 
     1257<t> 
     1258   This directive is NOT a reliable or sufficient mechanism for ensuring 
     1259   privacy. In particular, malicious or compromised caches might not 
     1260   recognize or obey this directive, and communications networks might be 
     1261   vulnerable to eavesdropping. 
     1262</t> 
     1263<t> 
     1264   Note that if a request containing this directive is satisfied from a 
     1265   cache, the no-store request directive does not apply to the already 
     1266   stored response. 
     1267</t> 
     1268</section> 
     1269 
     1270<section title="max-age" anchor="cache-request-directive.max-age"> 
    12771271   <iref item="Cache Directives" primary="true" subitem="max-age" /> 
    12781272   <iref item="max-age" primary="true" subitem="Cache Directive" /> 
     1273<t> 
     1274   Argument syntax: 
    12791275   <list> 
    1280       <t>The max-age request directive indicates that the client is unwilling to 
    1281       accept a response whose age is greater than the specified number of 
    1282       seconds. Unless the max-stale request directive is also present, the 
    1283       client is not willing to accept a stale response.</t> 
    1284    </list> 
    1285 </t> 
    1286 <t> 
    1287    <x:dfn>max-stale</x:dfn> 
     1276      <t> 
     1277        <x:ref>delta-seconds</x:ref> (see <xref target="delta-seconds"/>) 
     1278      </t> 
     1279   </list> 
     1280</t> 
     1281<t> 
     1282   The max-age request directive indicates that the client is unwilling to 
     1283   accept a response whose age is greater than the specified number of 
     1284   seconds. Unless the max-stale request directive is also present, the 
     1285   client is not willing to accept a stale response. 
     1286</t> 
     1287<t> 
     1288   &Note; This directive uses the token form of the argument syntax; 
     1289   e.g., 'max-age=5', not 'max-age="5"'. Senders &SHOULD-NOT; use the 
     1290   quoted-string form. 
     1291</t> 
     1292</section> 
     1293 
     1294<section title="max-stale" anchor="cache-request-directive.max-stale"> 
    12881295   <iref item="Cache Directives" primary="true" subitem="max-stale" /> 
    12891296   <iref item="max-stale" primary="true" subitem="Cache Directive" /> 
     1297<t> 
     1298   Argument syntax: 
    12901299   <list> 
    1291       <t>The max-stale request directive indicates that the client is willing 
    1292       to accept a response that has exceeded its expiration time. If max-stale 
    1293       is assigned a value, then the client is willing to accept a response 
    1294       that has exceeded its expiration time by no more than the specified 
    1295       number of seconds. If no value is assigned to max-stale, then the client 
    1296       is willing to accept a stale response of any age.</t> 
    1297    </list> 
    1298 </t> 
    1299 <t> 
    1300    <x:dfn>min-fresh</x:dfn> 
     1300      <t> 
     1301        <x:ref>delta-seconds</x:ref> (see <xref target="delta-seconds"/>) 
     1302      </t> 
     1303   </list> 
     1304</t> 
     1305<t> 
     1306   The max-stale request directive indicates that the client is willing 
     1307   to accept a response that has exceeded its expiration time. If max-stale 
     1308   is assigned a value, then the client is willing to accept a response 
     1309   that has exceeded its expiration time by no more than the specified 
     1310   number of seconds. If no value is assigned to max-stale, then the client 
     1311   is willing to accept a stale response of any age. 
     1312</t> 
     1313<t> 
     1314   &Note; This directive uses the token form of the argument syntax; 
     1315   e.g., 'max-stale=10', not 'max-stale="10"'. Senders &SHOULD-NOT; use the 
     1316   quoted-string form. 
     1317</t> 
     1318</section> 
     1319 
     1320<section title="min-fresh" anchor="cache-request-directive.min-fresh"> 
    13011321   <iref item="Cache Directives" primary="true" subitem="min-fresh" /> 
    13021322   <iref item="min-fresh" primary="true" subitem="Cache Directive" /> 
     1323<t> 
     1324   Argument syntax: 
    13031325   <list> 
    1304       <t>The min-fresh request directive indicates that the client is willing 
    1305       to accept a response whose freshness lifetime is no less than its 
    1306       current age plus the specified time in seconds. That is, the client 
    1307       wants a response that will still be fresh for at least the specified 
    1308       number of seconds.</t> 
    1309    </list> 
    1310 </t> 
    1311 <t> 
    1312    <x:dfn>no-transform</x:dfn> 
     1326      <t> 
     1327        <x:ref>delta-seconds</x:ref> (see <xref target="delta-seconds"/>) 
     1328      </t> 
     1329   </list> 
     1330</t> 
     1331<t> 
     1332   The min-fresh request directive indicates that the client is willing 
     1333   to accept a response whose freshness lifetime is no less than its 
     1334   current age plus the specified time in seconds. That is, the client 
     1335   wants a response that will still be fresh for at least the specified 
     1336   number of seconds. 
     1337</t> 
     1338<t> 
     1339   &Note; This directive uses the token form of the argument syntax; 
     1340   e.g., 'min-fresh=20', not 'min-fresh="20"'. Senders &SHOULD-NOT; use the 
     1341   quoted-string form. 
     1342</t> 
     1343</section> 
     1344 
     1345<section title="no-transform" anchor="cache-request-directive.no-transform"> 
    13131346   <iref item="Cache Directives" primary="true" subitem="no-transform" /> 
    13141347   <iref item="no-transform" primary="true" subitem="Cache Directive" /> 
    1315    <list> 
    1316       <t>The no-transform request directive indicates that an intermediary 
    1317         (whether or not it implements a cache) &MUST-NOT; change the  
    1318         Content-Encoding, Content-Range or Content-Type request header fields,  
    1319         nor the request representation.</t> 
    1320    </list> 
    1321 </t> 
    1322 <t> 
    1323    <x:dfn>only-if-cached</x:dfn> 
     1348<t> 
     1349   The no-transform request directive indicates that an intermediary 
     1350   (whether or not it implements a cache) &MUST-NOT; change the  
     1351   Content-Encoding, Content-Range or Content-Type request header fields,  
     1352   nor the request representation. 
     1353</t> 
     1354</section> 
     1355 
     1356<section title="only-if-cached" anchor="cache-request-directive.only-if-cached"> 
    13241357   <iref item="Cache Directives" primary="true" subitem="only-if-cached" /> 
    13251358   <iref item="only-if-cached" primary="true" subitem="Cache Directive" /> 
    1326    <list> 
    1327       <t>The only-if-cached request directive indicates that the client only 
    1328       wishes to obtain a stored response. If it receives this directive, a 
    1329       cache &SHOULD; either respond using a stored response that is consistent 
    1330       with the other constraints of the request, or respond with a 504 
    1331       (Gateway Timeout) status code. If a group of caches is being operated as 
    1332       a unified system with good internal connectivity, a member cache &MAY; 
    1333       forward such a request within that group of caches.</t> 
    1334    </list> 
    1335 </t> 
     1359<t> 
     1360   The only-if-cached request directive indicates that the client only 
     1361   wishes to obtain a stored response. If it receives 3ive, a 
     1362   cache &SHOULD; either respond using a stored response that is consistent 
     1363   with the other constraints of the request, or respond with a 504 
     1364   (Gateway Timeout) status code. If a group of caches is being operated as 
     1365   a unified system with good internal connectivity, a member cache &MAY; 
     1366   forward such a request within that group of caches. 
     1367</t> 
     1368</section> 
    13361369</section> 
    13371370 
     
    13401373   <x:anchor-alias value="cache-response-directive" /> 
    13411374 
    1342 <figure><artwork type="abnf2616"><iref item="Grammar" primary="true"  
    1343    subitem="cache-response-directive" /> 
    1344   <x:ref>cache-response-directive</x:ref> = 
    1345        "public" 
    1346      / "private" [ "=" <x:ref>DQUOTE</x:ref> 1#<x:ref>field-name</x:ref> <x:ref>DQUOTE</x:ref> ] 
    1347      / "no-cache" [ "=" <x:ref>DQUOTE</x:ref> 1#<x:ref>field-name</x:ref> <x:ref>DQUOTE</x:ref> ] 
    1348      / "no-store" 
    1349      / "no-transform" 
    1350      / "must-revalidate" 
    1351      / "proxy-revalidate" 
    1352      / "max-age" "=" <x:ref>delta-seconds</x:ref> 
    1353      / "s-maxage" "=" <x:ref>delta-seconds</x:ref> 
    1354      / <x:ref>cache-extension</x:ref> 
    1355 </artwork></figure> 
    1356  
    1357 <t> 
    1358    <x:dfn>public</x:dfn> 
     1375<section title="public" anchor="cache-response-directive.only-if-cached"> 
    13591376   <iref item="Cache Directives" primary="true" subitem="public" /> 
    13601377   <iref item="public" primary="true" subitem="Cache Directive" /> 
    1361    <list> 
    1362       <t>The public response directive indicates that a response whose  
    1363         associated request contains an 'Authentication' header &MAY; be  
    1364         stored (see <xref target="caching.authenticated.responses" />).</t> 
    1365   </list> 
    1366 </t> 
    1367 <t> 
    1368    <x:dfn>private</x:dfn> 
     1378<t> 
     1379   The public response directive indicates that a response whose  
     1380   associated request contains an 'Authentication' header &MAY; be  
     1381   stored (see <xref target="caching.authenticated.responses" />). 
     1382</t> 
     1383</section> 
     1384 
     1385<section title="private" anchor="cache-response-directive.private"> 
    13691386   <iref item="Cache Directives" primary="true" subitem="private" /> 
    13701387   <iref item="private" primary="true" subitem="Cache Directive" /> 
     1388<t> 
     1389   Argument syntax: 
    13711390   <list> 
    1372       <t>The private response directive indicates that the response message is 
    1373       intended for a single user and &MUST-NOT; be stored by a shared cache. A 
    1374       private cache &MAY; store the response.</t> 
    1375       <t>If the private response directive specifies one or more field-names, 
    1376       this requirement is limited to the field-values associated with the 
    1377       listed response header fields. That is, a shared cache &MUST-NOT; store 
    1378       the specified field-names(s), whereas it &MAY; store the remainder of the 
    1379       response message.</t> 
    1380       <t>The field-names given are not limited to the set of standard header 
    1381       fields defined by this specification. Field names are case-insensitive. 
     1391      <t> 
     1392        #<x:ref>field-name</x:ref> 
    13821393      </t> 
    1383       <t>&Note; This usage of the word "private" only controls 
    1384       where the response can be stored; it cannot ensure the privacy of the 
    1385       message content. Also, private response directives with field-names are 
    1386       often handled by implementations as if an unqualified private directive 
    1387       was received; i.e., the special handling for the qualified form is not 
    1388       widely implemented.</t> 
    1389    </list> 
    1390 </t> 
    1391 <t> 
    1392    <x:dfn>no-cache</x:dfn> 
     1394   </list> 
     1395</t> 
     1396<t> 
     1397   The private response directive indicates that the response message is 
     1398   intended for a single user and &MUST-NOT; be stored by a shared cache. A 
     1399   private cache &MAY; store the response. 
     1400</t> 
     1401<t> 
     1402   If the private response directive specifies one or more field-names, 
     1403   this requirement is limited to the field-values associated with the 
     1404   listed response header fields. That is, a shared cache &MUST-NOT; store 
     1405   the specified field-names(s), whereas it &MAY; store the remainder of the 
     1406   response message. 
     1407</t> 
     1408<t> 
     1409   The field-names given are not limited to the set of standard header 
     1410   fields defined by this specification. Field names are case-insensitive. 
     1411</t> 
     1412<t> 
     1413   &Note; This usage of the word "private" only controls 
     1414   where the response can be stored; it cannot ensure the privacy of the 
     1415   message content. Also, private response directives with field-names are 
     1416   often handled by implementations as if an unqualified private directive 
     1417   was received; i.e., the special handling for the qualified form is not 
     1418   widely implemented. 
     1419</t> 
     1420<t> 
     1421   &Note; This directive uses the quoted-string form of the argument 
     1422   syntax. Senders &SHOULD-NOT; use the token form (even if quoting appears not 
     1423   to be needed for single-entry lists). 
     1424</t> 
     1425</section> 
     1426 
     1427<section title="no-cache" anchor="cache-response-directive.no-cache"> 
    13931428   <iref item="Cache Directives" primary="true" subitem="no-cache" /> 
    13941429   <iref item="no-cache" primary="true" subitem="Cache Directive" /> 
     1430<t> 
     1431   Argument syntax: 
    13951432   <list> 
    1396       <t>The no-cache response directive indicates that the response &MUST-NOT; 
    1397       be used to satisfy a subsequent request without successful validation on 
    1398       the origin server. This allows an origin server to prevent a cache from 
    1399       using it to satisfy a request without contacting it, even by caches that 
    1400       have been configured to return stale responses.</t> 
    1401       <t>If the no-cache response directive specifies one or more field-names, 
    1402       then a cache &MAY; use the response to satisfy a subsequent request, 
    1403       subject to any other restrictions on caching. However, any header fields 
    1404       in the response that have the field-name(s) listed &MUST-NOT; be sent 
    1405       in the response to a subsequent request without successful revalidation 
    1406       with the origin server. This allows an origin server to prevent the 
    1407       re-use of certain header fields in a response, while still allowing 
    1408       caching of the rest of the response.</t>  
    1409       <t>The field-names given are not limited to the set of standard header 
    1410       fields defined by this specification. Field names are case-insensitive. 
     1433      <t> 
     1434        #<x:ref>field-name</x:ref> 
    14111435      </t> 
    1412       <t>&Note; Most HTTP/1.0 caches will not recognize or obey 
    1413       this directive. Also, no-cache response directives with field-names are 
    1414       often handled by implementations as if an unqualified no-cache directive 
    1415       was received; i.e., the special handling for the qualified form is not 
    1416       widely implemented.</t> 
    1417    </list> 
    1418 </t> 
    1419 <t> 
    1420    <x:dfn>no-store</x:dfn> 
     1436   </list> 
     1437</t> 
     1438<t> 
     1439   The no-cache response directive indicates that the response &MUST-NOT; 
     1440   be used to satisfy a subsequent request without successful validation on 
     1441   the origin server. This allows an origin server to prevent a cache from 
     1442   using it to satisfy a request without contacting it, even by caches that 
     1443   have been configured to return stale responses. 
     1444</t> 
     1445<t> 
     1446   If the no-cache response directive specifies one or more field-names, 
     1447   then a cache &MAY; use the response to satisfy a subsequent request, 
     1448   subject to any other restrictions on caching. However, any header fields 
     1449   in the response that have the field-name(s) listed &MUST-NOT; be sent 
     1450   in the response to a subsequent request without successful revalidation 
     1451   with the origin server. This allows an origin server to prevent the 
     1452   re-use of certain header fields in a response, while still allowing 
     1453   caching of the rest of the response. 
     1454</t>  
     1455<t> 
     1456   The field-names given are not limited to the set of standard header 
     1457   fields defined by this specification. Field names are case-insensitive. 
     1458</t> 
     1459<t> 
     1460   &Note; Most HTTP/1.0 caches will not recognize or obey 
     1461   this directive. Also, no-cache response directives with field-names are 
     1462   often handled by implementations as if an unqualified no-cache directive 
     1463   was received; i.e., the special handling for the qualified form is not 
     1464   widely implemented. 
     1465</t> 
     1466<t> 
     1467   &Note; This directive uses the quoted-string form of the argument 
     1468   syntax. Senders &SHOULD-NOT; use the token form (even if quoting appears not 
     1469   to be needed for single-entry lists). 
     1470</t> 
     1471</section> 
     1472 
     1473<section title="no-store" anchor="cache-response-directive.no-store"> 
    14211474   <iref item="Cache Directives" primary="true" subitem="no-store" /> 
    14221475   <iref item="no-store" primary="true" subitem="Cache Directive" /> 
    1423    <list> 
    1424       <t>The no-store response directive indicates that a cache &MUST-NOT; 
    1425       store any part of either the immediate request or response. This 
    1426       directive applies to both private and shared caches. "&MUST-NOT; 
    1427       store" in this context means that the cache &MUST-NOT; intentionally 
    1428       store the information in non-volatile storage, and &MUST; make a 
    1429       best-effort attempt to remove the information from volatile storage as 
    1430       promptly as possible after forwarding it.</t> 
    1431       <t>This directive is NOT a reliable or sufficient mechanism for ensuring 
    1432       privacy. In particular, malicious or compromised caches might not 
    1433       recognize or obey this directive, and communications networks might be 
    1434       vulnerable to eavesdropping.</t> 
    1435    </list> 
    1436 </t> 
    1437 <t> 
    1438    <x:dfn>must-revalidate</x:dfn> 
     1476<t> 
     1477   The no-store response directive indicates that a cache &MUST-NOT; 
     1478   store any part of either the immediate request or response. This 
     1479   directive applies to both private and shared caches. "&MUST-NOT; 
     1480   store" in this context means that the cache &MUST-NOT; intentionally 
     1481   store the information in non-volatile storage, and &MUST; make a 
     1482   best-effort attempt to remove the information from volatile storage as 
     1483   promptly as possible after forwarding it. 
     1484</t> 
     1485<t> 
     1486   This directive is NOT a reliable or sufficient mechanism for ensuring 
     1487   privacy. In particular, malicious or compromised caches might not 
     1488   recognize or obey this directive, and communications networks might be 
     1489   vulnerable to eavesdropping. 
     1490</t> 
     1491</section> 
     1492 
     1493<section title="must-revalidate" anchor="cache-response-directive.must-revalidate"> 
    14391494   <iref item="Cache Directives" primary="true" subitem="must-revalidate" /> 
    14401495   <iref item="must-revalidate" primary="true" subitem="Cache Directive" /> 
    1441    <list> 
    1442       <t>The must-revalidate response directive indicates that once it has 
    1443       become stale, a cache &MUST-NOT; use the response to satisfy subsequent 
    1444       requests without successful validation on the origin server.</t> 
    1445       <t>The must-revalidate directive is necessary to support reliable 
    1446       operation for certain protocol features. In all circumstances a 
    1447       cache &MUST; obey the must-revalidate directive; in particular, 
    1448       if a cache cannot reach the origin server for any reason, it &MUST; 
    1449       generate a 504 (Gateway Timeout) response.</t> 
    1450       <t>The must-revalidate directive ought to be used by servers if and only 
    1451       if failure to validate a request on the representation could result in 
    1452       incorrect operation, such as a silently unexecuted financial 
    1453       transaction.</t> 
    1454    </list> 
    1455 </t> 
    1456 <t> 
    1457    <x:dfn>proxy-revalidate</x:dfn> 
     1496<t> 
     1497   The must-revalidate response directive indicates that once it has 
     1498   become stale, a cache &MUST-NOT; use the response to satisfy subsequent 
     1499   requests without successful validation on the origin server. 
     1500</t> 
     1501<t> 
     1502   The must-revalidate directive is necessary to support reliable 
     1503   operation for certain protocol features. In all circumstances a 
     1504   cache &MUST; obey the must-revalidate directive; in particular, 
     1505   if a cache cannot reach the origin server for any reason, it &MUST; 
     1506   generate a 504 (Gateway Timeout) response. 
     1507</t> 
     1508<t> 
     1509   The must-revalidate directive ought to be used by servers if and only 
     1510   if failure to validate a request on the representation could result in 
     1511   incorrect operation, such as a silently unexecuted financial 
     1512   transaction. 
     1513</t> 
     1514</section> 
     1515 
     1516<section title="proxy-revalidate" anchor="cache-response-directive.proxy-revalidate"> 
    14581517   <iref item="Cache Directives" primary="true" subitem="proxy-revalidate" /> 
    14591518   <iref item="proxy-revalidate" primary="true" subitem="Cache Directive" /> 
    1460    <list> 
    1461       <t>The proxy-revalidate response directive has the same meaning as the 
    1462       must-revalidate response directive, except that it does not apply to 
    1463       private caches.</t> 
    1464    </list> 
    1465 </t> 
    1466 <t> 
    1467    <x:dfn>max-age</x:dfn> 
     1519<t> 
     1520   The proxy-revalidate response directive has the same meaning as the 
     1521   must-revalidate response directive, except that it does not apply to 
     1522   private caches. 
     1523</t> 
     1524</section> 
     1525 
     1526<section title="max-age" anchor="cache-response-directive.max-age"> 
    14681527   <iref item="Cache Directives" primary="true" subitem="max-age" /> 
    14691528   <iref item="max-age" primary="true" subitem="Cache Directive" /> 
     1529<t> 
     1530   Argument syntax: 
    14701531   <list> 
    1471       <t>The max-age response directive indicates that the response is to be 
    1472       considered stale after its age is greater than the specified number of 
    1473       seconds.</t> 
    1474    </list> 
    1475 </t> 
    1476 <t> 
    1477    <x:dfn>s-maxage</x:dfn> 
     1532      <t> 
     1533        <x:ref>delta-seconds</x:ref> (see <xref target="delta-seconds"/>) 
     1534      </t> 
     1535   </list> 
     1536</t> 
     1537<t> 
     1538   The max-age response directive indicates that the response is to be 
     1539   considered stale after its age is greater than the specified number of 
     1540   seconds. 
     1541</t> 
     1542<t> 
     1543   &Note; This directive uses the token form of the argument syntax; 
     1544   e.g., 'max-age=5', not 'max-age="5"'. Senders &SHOULD-NOT; use the 
     1545   quoted-string form. 
     1546</t> 
     1547</section>       
     1548 
     1549<section title="s-maxage" anchor="cache-response-directive.s-maxage"> 
    14781550   <iref item="Cache Directives" primary="true" subitem="s-maxage" /> 
    14791551   <iref item="s-maxage" primary="true" subitem="Cache Directive" /> 
     1552<t> 
     1553   Argument syntax: 
    14801554   <list> 
    1481       <t>The s-maxage response directive indicates that, in shared caches, the 
    1482       maximum age specified by this directive overrides the maximum age 
    1483       specified by either the max-age directive or the Expires header field. The 
    1484       s-maxage directive also implies the semantics of the proxy-revalidate 
    1485       response directive.</t> 
    1486    </list> 
    1487 </t> 
    1488 <t> 
    1489    <x:dfn>no-transform</x:dfn> 
     1555      <t> 
     1556        <x:ref>delta-seconds</x:ref> (see <xref target="delta-seconds"/>) 
     1557      </t> 
     1558   </list> 
     1559</t> 
     1560<t> 
     1561   The s-maxage response directive indicates that, in shared caches, the 
     1562   maximum age specified by this directive overrides the maximum age 
     1563   specified by either the max-age directive or the Expires header field. The 
     1564   s-maxage directive also implies the semantics of the proxy-revalidate 
     1565   response directive. 
     1566</t> 
     1567<t> 
     1568   &Note; This directive uses the token form of the argument syntax; 
     1569   e.g., 's-maxage=10', not 's-maxage="10"'. Senders &SHOULD-NOT; use the 
     1570   quoted-string form. 
     1571</t> 
     1572</section> 
     1573 
     1574<section title="no-transform" anchor="cache-response-directive.no-transform"> 
    14901575   <iref item="Cache Directives" primary="true" subitem="no-transform" /> 
    14911576   <iref item="no-transform" primary="true" subitem="Cache Directive" /> 
    1492    <list> 
    1493       <t>The no-transform response directive indicates that an intermediary 
    1494       (regardless of whether it implements a cache) &MUST-NOT; change the  
    1495       Content-Encoding, Content-Range or Content-Type response header fields,  
    1496       nor the response representation.</t> 
    1497    </list> 
    1498 </t> 
     1577<t> 
     1578   The no-transform response directive indicates that an intermediary 
     1579   (regardless of whether it implements a cache) &MUST-NOT; change the  
     1580   Content-Encoding, Content-Range or Content-Type response header fields,  
     1581   nor the response representation. 
     1582</t> 
     1583</section> 
    14991584 
    15001585</section> 
     
    19532038   <c>max-age</c> 
    19542039   <c> 
    1955       <xref target="cache-request-directive"/>, <xref target="cache-response-directive"/> 
     2040      <xref target="cache-request-directive.max-age"/>, <xref target="cache-response-directive.max-age"/> 
    19562041   </c> 
    19572042   <c>max-stale</c> 
    19582043   <c> 
    1959       <xref target="cache-request-directive"/> 
     2044      <xref target="cache-request-directive.max-stale"/> 
    19602045   </c> 
    19612046   <c>min-fresh</c> 
    19622047   <c> 
    1963       <xref target="cache-request-directive"/> 
     2048      <xref target="cache-request-directive.min-fresh"/> 
    19642049   </c> 
    19652050   <c>must-revalidate</c> 
    19662051   <c> 
    1967       <xref target="cache-response-directive"/> 
     2052      <xref target="cache-response-directive.must-revalidate"/> 
    19682053   </c> 
    19692054   <c>no-cache</c> 
    19702055   <c> 
    1971       <xref target="cache-request-directive"/>, <xref target="cache-response-directive"/> 
     2056      <xref target="cache-request-directive.no-cache"/>, <xref target="cache-response-directive.no-cache"/> 
    19722057   </c> 
    19732058   <c>no-store</c> 
    19742059   <c> 
    1975       <xref target="cache-request-directive"/>, <xref target="cache-response-directive"/> 
     2060      <xref target="cache-request-directive.no-store"/>, <xref target="cache-response-directive.no-store"/> 
    19762061   </c> 
    19772062   <c>no-transform</c> 
    19782063   <c> 
    1979       <xref target="cache-request-directive"/>, <xref target="cache-response-directive"/> 
     2064      <xref target="cache-request-directive.no-transform"/>, <xref target="cache-response-directive.no-transform"/> 
    19802065   </c> 
    19812066   <c>only-if-cached</c> 
    19822067   <c> 
    1983       <xref target="cache-request-directive"/> 
     2068      <xref target="cache-request-directive.only-if-cached"/> 
    19842069   </c> 
    19852070   <c>private</c> 
    19862071   <c> 
    1987       <xref target="cache-response-directive"/> 
     2072      <xref target="cache-response-directive.private"/> 
    19882073   </c> 
    19892074   <c>proxy-revalidate</c> 
    19902075   <c> 
    1991       <xref target="cache-response-directive"/> 
     2076      <xref target="cache-response-directive.proxy-revalidate"/> 
    19922077   </c> 
    19932078   <c>public</c> 
    19942079   <c> 
    1995       <xref target="cache-response-directive"/> 
     2080      <xref target="cache-response-directive.only-if-cached"/> 
    19962081   </c> 
    19972082   <c>s-maxage</c> 
    19982083   <c> 
    1999       <xref target="cache-response-directive"/> 
     2084      <xref target="cache-response-directive.s-maxage"/> 
    20002085   </c> 
    20012086   <c>stale-if-error</c> 
     
    24432528 ) 
    24442529 
    2445 <x:ref>cache-directive</x:ref> = cache-request-directive / cache-response-directive 
    2446 <x:ref>cache-extension</x:ref> = token [ "=" ( token / quoted-string ) ] 
    2447 <x:ref>cache-request-directive</x:ref> = "no-cache" / "no-store" / ( "max-age=" 
    2448  delta-seconds ) / ( "max-stale" [ "=" delta-seconds ] ) / ( 
    2449  "min-fresh=" delta-seconds ) / "no-transform" / "only-if-cached" / 
    2450  cache-extension 
    2451 <x:ref>cache-response-directive</x:ref> = "public" / ( "private" [ "=" DQUOTE *( "," 
    2452  OWS ) field-name *( OWS "," [ OWS field-name ] ) DQUOTE ] ) / ( 
    2453  "no-cache" [ "=" DQUOTE *( "," OWS ) field-name *( OWS "," [ OWS 
    2454  field-name ] ) DQUOTE ] ) / "no-store" / "no-transform" / 
    2455  "must-revalidate" / "proxy-revalidate" / ( "max-age=" delta-seconds 
    2456  ) / ( "s-maxage=" delta-seconds ) / cache-extension 
     2530<x:ref>cache-directive</x:ref> = token [ "=" ( token / quoted-string ) ] 
    24572531 
    24582532<x:ref>delta-seconds</x:ref> = 1*DIGIT 
     
    25012575  <list style="symbols"> 
    25022576    <t> 
     2577      <eref target="http://tools.ietf.org/wg/httpbis/trac/ticket/307"/>: 
     2578      "untangle Cache-Control ABNF" 
     2579    </t> 
     2580    <t> 
    25032581      <eref target="http://tools.ietf.org/wg/httpbis/trac/ticket/355"/>: 
    25042582      "Case sensitivity of header fields in CC values" 
Note: See TracChangeset for help on using the changeset viewer.