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

Ticket #307: 307.3.diff

File 307.3.diff, 30.1 KB (added by julian.reschke@gmx.de, 2 years ago)

Proposed patch

  • p6-cache.xml

     
    11841184      x:for-anchor="" /> 
    11851185   <x:anchor-alias value="Cache-Control"/> 
    11861186   <x:anchor-alias value="cache-directive"/> 
    1187    <x:anchor-alias value="cache-extension"/> 
    1188    <x:anchor-alias value="cache-request-directive"/> 
    1189    <x:anchor-alias value="cache-response-directive"/> 
    11901187<t> 
    11911188   The "Cache-Control" header field is used to specify directives for 
    11921189   caches along the request/response chain. Such cache directives are 
     
    12131210   to all recipients along the request/response chain. It is not possible to  
    12141211   target a directive to a specific cache. 
    12151212</t> 
    1216 <t>Cache directives are identified by a token, to be compared case-insensitively, and have an optional argument.</t> 
    1217 <figure><artwork type="abnf2616"><iref primary="true" item="Grammar" subitem="Cache-Control"/><iref primary="true" item="Grammar" subitem="cache-extension"/> 
     1213<t> 
     1214   Cache directives are identified by a token, to be compared case-insensitively, 
     1215   and have an optional argument, that can use both token and quoted-string 
     1216   syntax. For the directives defined below that define arguments, recipients 
     1217   ought to accept both forms, even if one is documented to be preferred. For 
     1218   any other directive, recipients &MUST; accept both forms.  
     1219</t> 
     1220<figure><artwork type="abnf2616"><iref primary="true" item="Grammar" subitem="Cache-Control"/><iref primary="true" item="Grammar" subitem="cache-directive"/> 
    12181221  <x:ref>Cache-Control</x:ref>   = 1#<x:ref>cache-directive</x:ref> 
    12191222 
    1220   <x:ref>cache-directive</x:ref> = <x:ref>cache-request-directive</x:ref> 
    1221      / <x:ref>cache-response-directive</x:ref> 
    1222  
    1223   <x:ref>cache-extension</x:ref> = <x:ref>token</x:ref> [ "=" ( <x:ref>token</x:ref> / <x:ref>quoted-string</x:ref> ) ] 
     1223  <x:ref>cache-directive</x:ref> = <x:ref>token</x:ref> [ "=" ( <x:ref>token</x:ref> / <x:ref>quoted-string</x:ref> ) ] 
    12241224</artwork></figure> 
     1225<t> 
     1226   For the cache directives defined below, no argument is defined (nor allowed) 
     1227   otherwise stated otherwise. 
     1228</t> 
    12251229 
    12261230<section anchor="cache-request-directive"  
    12271231   title="Request Cache-Control Directives"> 
    1228    <x:anchor-alias value="cache-request-directive" /> 
    12291232 
    1230 <figure><artwork type="abnf2616"><iref item="Grammar" primary="true"  
    1231    subitem="cache-request-directive" /> 
    1232   <x:ref>cache-request-directive</x:ref> = 
    1233        "no-cache" 
    1234      / "no-store" 
    1235      / "max-age" "=" <x:ref>delta-seconds</x:ref> 
    1236      / "max-stale" [ "=" <x:ref>delta-seconds</x:ref> ] 
    1237      / "min-fresh" "=" <x:ref>delta-seconds</x:ref> 
    1238      / "no-transform" 
    1239      / "only-if-cached" 
    1240      / <x:ref>cache-extension</x:ref> 
    1241 </artwork></figure> 
    1242  
    1243 <t> 
    1244    <x:dfn>no-cache</x:dfn> 
     1233<section title="no-cache" anchor="cache-request-directive.no-cache"> 
    12451234   <iref item="Cache Directives" primary="true" subitem="no-cache" /> 
    12461235   <iref item="no-cache" primary="true" subitem="Cache Directive" /> 
    1247    <list> 
    1248       <t>The no-cache request directive indicates that a cache &MUST-NOT;  
    1249       use a stored response to satisfy the request without successful  
    1250       validation on the origin server.</t>  
    1251    </list> 
     1236<t> 
     1237   The no-cache request directive indicates that a cache &MUST-NOT;  
     1238   use a stored response to satisfy the request without successful  
     1239   validation on the origin server. 
    12521240</t> 
    1253 <t> 
    1254    <x:dfn>no-store</x:dfn> 
     1241</section> 
     1242  
     1243<section title="no-store" anchor="cache-request-directive.no-store"> 
    12551244   <iref item="Cache Directives" primary="true" subitem="no-store" /> 
    12561245   <iref item="no-store" primary="true" subitem="Cache Directive" /> 
    1257    <list> 
    1258       <t>The no-store request directive indicates that a cache &MUST-NOT; 
    1259       store any part of either this request or any response to it. This 
    1260       directive applies to both private and shared caches. "&MUST-NOT; 
    1261       store" in this context means that the cache &MUST-NOT; intentionally 
    1262       store the information in non-volatile storage, and &MUST; make a 
    1263       best-effort attempt to remove the information from volatile storage as 
    1264       promptly as possible after forwarding it.</t> 
    1265       <t>This directive is NOT a reliable or sufficient mechanism for ensuring 
    1266       privacy. In particular, malicious or compromised caches might not 
    1267       recognize or obey this directive, and communications networks might be 
    1268       vulnerable to eavesdropping.</t> 
    1269       <t>Note that if a request containing this directive is satisfied from a 
    1270       cache, the no-store request directive does not apply to the already 
    1271       stored response.</t> 
    1272    </list> 
     1246<t> 
     1247   The no-store request directive indicates that a cache &MUST-NOT; 
     1248   store any part of either this request or any response to it. This 
     1249   directive applies to both private and shared caches. "&MUST-NOT; 
     1250   store" in this context means that the cache &MUST-NOT; intentionally 
     1251   store the information in non-volatile storage, and &MUST; make a 
     1252   best-effort attempt to remove the information from volatile storage as 
     1253   promptly as possible after forwarding it. 
    12731254</t> 
    12741255<t> 
    1275    <x:dfn>max-age</x:dfn> 
     1256   This directive is NOT a reliable or sufficient mechanism for ensuring 
     1257   privacy. In particular, malicious or compromised caches might not 
     1258   recognize or obey this directive, and communications networks might be 
     1259   vulnerable to eavesdropping. 
     1260</t> 
     1261<t> 
     1262   Note that if a request containing this directive is satisfied from a 
     1263   cache, the no-store request directive does not apply to the already 
     1264   stored response. 
     1265</t> 
     1266</section> 
     1267 
     1268<section title="max-age" anchor="cache-request-directive.max-age"> 
    12761269   <iref item="Cache Directives" primary="true" subitem="max-age" /> 
    12771270   <iref item="max-age" primary="true" subitem="Cache Directive" /> 
     1271<t> 
     1272   Argument syntax: 
    12781273   <list> 
    1279       <t>The max-age request directive indicates that the client is unwilling to 
    1280       accept a response whose age is greater than the specified number of 
    1281       seconds. Unless the max-stale request directive is also present, the 
    1282       client is not willing to accept a stale response.</t> 
     1274      <t> 
     1275        <x:ref>delta-seconds</x:ref> (see <xref target="delta-seconds"/>) 
     1276      </t> 
    12831277   </list> 
    12841278</t> 
    12851279<t> 
    1286    <x:dfn>max-stale</x:dfn> 
     1280   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. 
     1284</t> 
     1285<t> 
     1286   <x:h>Note:</x:h> This directive uses the token form of the argument syntax; 
     1287   e.g., 'max-age=5', not 'max-age="5"'. Senders &SHOULD-NOT; use the 
     1288   quoted-string form. 
     1289</t> 
     1290</section> 
     1291 
     1292<section title="max-stale" anchor="cache-request-directive.max-stale"> 
    12871293   <iref item="Cache Directives" primary="true" subitem="max-stale" /> 
    12881294   <iref item="max-stale" primary="true" subitem="Cache Directive" /> 
     1295<t> 
     1296   Argument syntax: 
    12891297   <list> 
    1290       <t>The max-stale request directive indicates that the client is willing 
    1291       to accept a response that has exceeded its expiration time. If max-stale 
    1292       is assigned a value, then the client is willing to accept a response 
    1293       that has exceeded its expiration time by no more than the specified 
    1294       number of seconds. If no value is assigned to max-stale, then the client 
    1295       is willing to accept a stale response of any age.</t> 
     1298      <t> 
     1299        <x:ref>delta-seconds</x:ref> (see <xref target="delta-seconds"/>) 
     1300      </t> 
    12961301   </list> 
    12971302</t> 
    12981303<t> 
    1299    <x:dfn>min-fresh</x:dfn> 
     1304   The max-stale request directive indicates that the client is willing 
     1305   to accept a response that has exceeded its expiration time. If max-stale 
     1306   is assigned a value, then the client is willing to accept a response 
     1307   that has exceeded its expiration time by no more than the specified 
     1308   number of seconds. If no value is assigned to max-stale, then the client 
     1309   is willing to accept a stale response of any age. 
     1310</t> 
     1311<t> 
     1312   <x:h>Note:</x:h> This directive uses the token form of the argument syntax; 
     1313   e.g., 'max-stale=10', not 'max-stale="10"'. Senders &SHOULD-NOT; use the 
     1314   quoted-string form. 
     1315</t> 
     1316</section> 
     1317 
     1318<section title="min-fresh" anchor="cache-request-directive.min-fresh"> 
    13001319   <iref item="Cache Directives" primary="true" subitem="min-fresh" /> 
    13011320   <iref item="min-fresh" primary="true" subitem="Cache Directive" /> 
     1321<t> 
     1322   Argument syntax: 
    13021323   <list> 
    1303       <t>The min-fresh request directive indicates that the client is willing 
    1304       to accept a response whose freshness lifetime is no less than its 
    1305       current age plus the specified time in seconds. That is, the client 
    1306       wants a response that will still be fresh for at least the specified 
    1307       number of seconds.</t> 
     1324      <t> 
     1325        <x:ref>delta-seconds</x:ref> (see <xref target="delta-seconds"/>) 
     1326      </t> 
    13081327   </list> 
    13091328</t> 
    13101329<t> 
    1311    <x:dfn>no-transform</x:dfn> 
     1330   The min-fresh request directive indicates that the client is willing 
     1331   to accept a response whose freshness lifetime is no less than its 
     1332   current age plus the specified time in seconds. That is, the client 
     1333   wants a response that will still be fresh for at least the specified 
     1334   number of seconds. 
     1335</t> 
     1336<t> 
     1337   <x:h>Note:</x:h> This directive uses the token form of the argument syntax; 
     1338   e.g., 'min-fresh=20', not 'min-fresh="20"'. Senders &SHOULD-NOT; use the 
     1339   quoted-string form. 
     1340</t> 
     1341</section> 
     1342 
     1343<section title="no-transform" anchor="cache-request-directive.no-transform"> 
    13121344   <iref item="Cache Directives" primary="true" subitem="no-transform" /> 
    13131345   <iref item="no-transform" primary="true" subitem="Cache Directive" /> 
    1314    <list> 
    1315       <t>The no-transform request directive indicates that an intermediary 
    1316         (whether or not it implements a cache) &MUST-NOT; change the  
    1317         Content-Encoding, Content-Range or Content-Type request header fields,  
    1318         nor the request representation.</t> 
    1319    </list> 
     1346<t> 
     1347   The no-transform request directive indicates that an intermediary 
     1348   (whether or not it implements a cache) &MUST-NOT; change the  
     1349   Content-Encoding, Content-Range or Content-Type request header fields,  
     1350   nor the request representation. 
    13201351</t> 
    1321 <t> 
    1322    <x:dfn>only-if-cached</x:dfn> 
     1352</section> 
     1353 
     1354<section title="only-if-cached" anchor="cache-request-directive.only-if-cached"> 
    13231355   <iref item="Cache Directives" primary="true" subitem="only-if-cached" /> 
    13241356   <iref item="only-if-cached" primary="true" subitem="Cache Directive" /> 
    1325    <list> 
    1326       <t>The only-if-cached request directive indicates that the client only 
    1327       wishes to obtain a stored response. If it receives this directive, a 
    1328       cache &SHOULD; either respond using a stored response that is consistent 
    1329       with the other constraints of the request, or respond with a 504 
    1330       (Gateway Timeout) status code. If a group of caches is being operated as 
    1331       a unified system with good internal connectivity, a member cache &MAY; 
    1332       forward such a request within that group of caches.</t> 
    1333    </list> 
     1357<t> 
     1358   The only-if-cached request directive indicates that the client only 
     1359   wishes to obtain a stored response. If it receives 3ive, a 
     1360   cache &SHOULD; either respond using a stored response that is consistent 
     1361   with the other constraints of the request, or respond with a 504 
     1362   (Gateway Timeout) status code. If a group of caches is being operated as 
     1363   a unified system with good internal connectivity, a member cache &MAY; 
     1364   forward such a request within that group of caches. 
    13341365</t> 
    13351366</section> 
     1367</section> 
    13361368 
    13371369<section anchor="cache-response-directive"  
    13381370   title="Response Cache-Control Directives"> 
    13391371   <x:anchor-alias value="cache-response-directive" /> 
    13401372 
    1341 <figure><artwork type="abnf2616"><iref item="Grammar" primary="true"  
    1342    subitem="cache-response-directive" /> 
    1343   <x:ref>cache-response-directive</x:ref> = 
    1344        "public" 
    1345      / "private" [ "=" <x:ref>DQUOTE</x:ref> 1#<x:ref>field-name</x:ref> <x:ref>DQUOTE</x:ref> ] 
    1346      / "no-cache" [ "=" <x:ref>DQUOTE</x:ref> 1#<x:ref>field-name</x:ref> <x:ref>DQUOTE</x:ref> ] 
    1347      / "no-store" 
    1348      / "no-transform" 
    1349      / "must-revalidate" 
    1350      / "proxy-revalidate" 
    1351      / "max-age" "=" <x:ref>delta-seconds</x:ref> 
    1352      / "s-maxage" "=" <x:ref>delta-seconds</x:ref> 
    1353      / <x:ref>cache-extension</x:ref> 
    1354 </artwork></figure> 
    1355  
    1356 <t> 
    1357    <x:dfn>public</x:dfn> 
     1373<section title="public" anchor="cache-response-directive.only-if-cached"> 
    13581374   <iref item="Cache Directives" primary="true" subitem="public" /> 
    13591375   <iref item="public" primary="true" subitem="Cache Directive" /> 
    1360    <list> 
    1361       <t>The public response directive indicates that a response whose  
    1362         associated request contains an 'Authentication' header &MAY; be  
    1363         stored (see <xref target="caching.authenticated.responses" />).</t> 
    1364   </list> 
     1376<t> 
     1377   The public response directive indicates that a response whose  
     1378   associated request contains an 'Authentication' header &MAY; be  
     1379   stored (see <xref target="caching.authenticated.responses" />). 
    13651380</t> 
    1366 <t> 
    1367    <x:dfn>private</x:dfn> 
     1381</section> 
     1382 
     1383<section title="private" anchor="cache-response-directive.private"> 
    13681384   <iref item="Cache Directives" primary="true" subitem="private" /> 
    13691385   <iref item="private" primary="true" subitem="Cache Directive" /> 
     1386<t> 
     1387   Argument syntax: 
    13701388   <list> 
    1371       <t>The private response directive indicates that the response message is 
    1372       intended for a single user and &MUST-NOT; be stored by a shared cache. A 
    1373       private cache &MAY; store the response.</t> 
    1374       <t>If the private response directive specifies one or more field-names, 
    1375       this requirement is limited to the field-values associated with the 
    1376       listed response header fields. That is, a shared cache &MUST-NOT; store 
    1377       the specified field-names(s), whereas it &MAY; store the remainder of the 
    1378       response message.</t> 
    1379       <t>The field-names given are not limited to the set of standard header 
    1380       fields defined by this specification. Field names are case-insensitive. 
     1389      <t> 
     1390        #<x:ref>field-name</x:ref> 
    13811391      </t> 
    1382       <t> <x:h>Note:</x:h> This usage of the word "private" only controls 
    1383       where the response can be stored; it cannot ensure the privacy of the 
    1384       message content. Also, private response directives with field-names are 
    1385       often handled by implementations as if an unqualified private directive 
    1386       was received; i.e., the special handling for the qualified form is not 
    1387       widely implemented.</t> 
    13881392   </list> 
    13891393</t> 
    13901394<t> 
    1391    <x:dfn>no-cache</x:dfn> 
     1395   The private response directive indicates that the response message is 
     1396   intended for a single user and &MUST-NOT; be stored by a shared cache. A 
     1397   private cache &MAY; store the response. 
     1398</t> 
     1399<t> 
     1400   If the private response directive specifies one or more field-names, 
     1401   this requirement is limited to the field-values associated with the 
     1402   listed response header fields. That is, a shared cache &MUST-NOT; store 
     1403   the specified field-names(s), whereas it &MAY; store the remainder of the 
     1404   response message. 
     1405</t> 
     1406<t> 
     1407   The field-names given are not limited to the set of standard header 
     1408   fields defined by this specification. Field names are case-insensitive. 
     1409</t> 
     1410<t> 
     1411   <x:h>Note:</x:h> This usage of the word "private" only controls 
     1412   where the response can be stored; it cannot ensure the privacy of the 
     1413   message content. Also, private response directives with field-names are 
     1414   often handled by implementations as if an unqualified private directive 
     1415   was received; i.e., the special handling for the qualified form is not 
     1416   widely implemented. 
     1417</t> 
     1418<t> 
     1419   <x:h>Note:</x:h> This directive uses the quoted-string form of the argument 
     1420   syntax. Senders &SHOULD-NOT; use the token form (even if quoting appears not 
     1421   to be needed for single-entry lists). 
     1422</t> 
     1423</section> 
     1424 
     1425<section title="no-cache" anchor="cache-response-directive.no-cache"> 
    13921426   <iref item="Cache Directives" primary="true" subitem="no-cache" /> 
    13931427   <iref item="no-cache" primary="true" subitem="Cache Directive" /> 
     1428<t> 
     1429   Argument syntax: 
    13941430   <list> 
    1395       <t>The no-cache response directive indicates that the response &MUST-NOT; 
    1396       be used to satisfy a subsequent request without successful validation on 
    1397       the origin server. This allows an origin server to prevent a cache from 
    1398       using it to satisfy a request without contacting it, even by caches that 
    1399       have been configured to return stale responses.</t> 
    1400       <t>If the no-cache response directive specifies one or more field-names, 
    1401       then a cache &MAY; use the response to satisfy a subsequent request, 
    1402       subject to any other restrictions on caching. However, any header fields 
    1403       in the response that have the field-name(s) listed &MUST-NOT; be sent 
    1404       in the response to a subsequent request without successful revalidation 
    1405       with the origin server. This allows an origin server to prevent the 
    1406       re-use of certain header fields in a response, while still allowing 
    1407       caching of the rest of the response.</t>  
    1408       <t>The field-names given are not limited to the set of standard header 
    1409       fields defined by this specification. Field names are case-insensitive. 
     1431      <t> 
     1432        #<x:ref>field-name</x:ref> 
    14101433      </t> 
    1411       <t> <x:h>Note:</x:h> Most HTTP/1.0 caches will not recognize or obey 
    1412       this directive. Also, no-cache response directives with field-names are 
    1413       often handled by implementations as if an unqualified no-cache directive 
    1414       was received; i.e., the special handling for the qualified form is not 
    1415       widely implemented.</t> 
    14161434   </list> 
    14171435</t> 
    14181436<t> 
    1419    <x:dfn>no-store</x:dfn> 
     1437   The no-cache response directive indicates that the response &MUST-NOT; 
     1438   be used to satisfy a subsequent request without successful validation on 
     1439   the origin server. This allows an origin server to prevent a cache from 
     1440   using it to satisfy a request without contacting it, even by caches that 
     1441   have been configured to return stale responses. 
     1442</t> 
     1443<t> 
     1444   If the no-cache response directive specifies one or more field-names, 
     1445   then a cache &MAY; use the response to satisfy a subsequent request, 
     1446   subject to any other restrictions on caching. However, any header fields 
     1447   in the response that have the field-name(s) listed &MUST-NOT; be sent 
     1448   in the response to a subsequent request without successful revalidation 
     1449   with the origin server. This allows an origin server to prevent the 
     1450   re-use of certain header fields in a response, while still allowing 
     1451   caching of the rest of the response. 
     1452</t>  
     1453<t> 
     1454   The field-names given are not limited to the set of standard header 
     1455   fields defined by this specification. Field names are case-insensitive. 
     1456</t> 
     1457<t> 
     1458   <x:h>Note:</x:h> Most HTTP/1.0 caches will not recognize or obey 
     1459   this directive. Also, no-cache response directives with field-names are 
     1460   often handled by implementations as if an unqualified no-cache directive 
     1461   was received; i.e., the special handling for the qualified form is not 
     1462   widely implemented. 
     1463</t> 
     1464<t> 
     1465   <x:h>Note:</x:h> This directive uses the quoted-string form of the argument 
     1466   syntax. Senders &SHOULD-NOT; use the token form (even if quoting appears not 
     1467   to be needed for single-entry lists). 
     1468</t> 
     1469</section> 
     1470 
     1471<section title="no-store" anchor="cache-response-directive.no-store"> 
    14201472   <iref item="Cache Directives" primary="true" subitem="no-store" /> 
    14211473   <iref item="no-store" primary="true" subitem="Cache Directive" /> 
    1422    <list> 
    1423       <t>The no-store response directive indicates that a cache &MUST-NOT; 
    1424       store any part of either the immediate request or response. This 
    1425       directive applies to both private and shared caches. "&MUST-NOT; 
    1426       store" in this context means that the cache &MUST-NOT; intentionally 
    1427       store the information in non-volatile storage, and &MUST; make a 
    1428       best-effort attempt to remove the information from volatile storage as 
    1429       promptly as possible after forwarding it.</t> 
    1430       <t>This directive is NOT a reliable or sufficient mechanism for ensuring 
    1431       privacy. In particular, malicious or compromised caches might not 
    1432       recognize or obey this directive, and communications networks might be 
    1433       vulnerable to eavesdropping.</t> 
    1434    </list> 
     1474<t> 
     1475   The no-store response directive indicates that a cache &MUST-NOT; 
     1476   store any part of either the immediate request or response. This 
     1477   directive applies to both private and shared caches. "&MUST-NOT; 
     1478   store" in this context means that the cache &MUST-NOT; intentionally 
     1479   store the information in non-volatile storage, and &MUST; make a 
     1480   best-effort attempt to remove the information from volatile storage as 
     1481   promptly as possible after forwarding it. 
    14351482</t> 
    14361483<t> 
    1437    <x:dfn>must-revalidate</x:dfn> 
     1484   This directive is NOT a reliable or sufficient mechanism for ensuring 
     1485   privacy. In particular, malicious or compromised caches might not 
     1486   recognize or obey this directive, and communications networks might be 
     1487   vulnerable to eavesdropping. 
     1488</t> 
     1489</section> 
     1490 
     1491<section title="must-revalidate" anchor="cache-response-directive.must-revalidate"> 
    14381492   <iref item="Cache Directives" primary="true" subitem="must-revalidate" /> 
    14391493   <iref item="must-revalidate" primary="true" subitem="Cache Directive" /> 
    1440    <list> 
    1441       <t>The must-revalidate response directive indicates that once it has 
    1442       become stale, a cache &MUST-NOT; use the response to satisfy subsequent 
    1443       requests without successful validation on the origin server.</t> 
    1444       <t>The must-revalidate directive is necessary to support reliable 
    1445       operation for certain protocol features. In all circumstances a 
    1446       cache &MUST; obey the must-revalidate directive; in particular, 
    1447       if a cache cannot reach the origin server for any reason, it &MUST; 
    1448       generate a 504 (Gateway Timeout) response.</t> 
    1449       <t>The must-revalidate directive ought to be used by servers if and only 
    1450       if failure to validate a request on the representation could result in 
    1451       incorrect operation, such as a silently unexecuted financial 
    1452       transaction.</t> 
    1453    </list> 
     1494<t> 
     1495   The must-revalidate response directive indicates that once it has 
     1496   become stale, a cache &MUST-NOT; use the response to satisfy subsequent 
     1497   requests without successful validation on the origin server. 
    14541498</t> 
    14551499<t> 
    1456    <x:dfn>proxy-revalidate</x:dfn> 
     1500   The must-revalidate directive is necessary to support reliable 
     1501   operation for certain protocol features. In all circumstances a 
     1502   cache &MUST; obey the must-revalidate directive; in particular, 
     1503   if a cache cannot reach the origin server for any reason, it &MUST; 
     1504   generate a 504 (Gateway Timeout) response. 
     1505</t> 
     1506<t> 
     1507   The must-revalidate directive ought to be used by servers if and only 
     1508   if failure to validate a request on the representation could result in 
     1509   incorrect operation, such as a silently unexecuted financial 
     1510   transaction. 
     1511</t> 
     1512</section> 
     1513 
     1514<section title="proxy-revalidate" anchor="cache-response-directive.proxy-revalidate"> 
    14571515   <iref item="Cache Directives" primary="true" subitem="proxy-revalidate" /> 
    14581516   <iref item="proxy-revalidate" primary="true" subitem="Cache Directive" /> 
    1459    <list> 
    1460       <t>The proxy-revalidate response directive has the same meaning as the 
    1461       must-revalidate response directive, except that it does not apply to 
    1462       private caches.</t> 
    1463    </list> 
     1517<t> 
     1518   The proxy-revalidate response directive has the same meaning as the 
     1519   must-revalidate response directive, except that it does not apply to 
     1520   private caches. 
    14641521</t> 
    1465 <t> 
    1466    <x:dfn>max-age</x:dfn> 
     1522</section> 
     1523 
     1524<section title="max-age" anchor="cache-response-directive.max-age"> 
    14671525   <iref item="Cache Directives" primary="true" subitem="max-age" /> 
    14681526   <iref item="max-age" primary="true" subitem="Cache Directive" /> 
     1527<t> 
     1528   Argument syntax: 
    14691529   <list> 
    1470       <t>The max-age response directive indicates that the response is to be 
    1471       considered stale after its age is greater than the specified number of 
    1472       seconds.</t> 
     1530      <t> 
     1531        <x:ref>delta-seconds</x:ref> (see <xref target="delta-seconds"/>) 
     1532      </t> 
    14731533   </list> 
    14741534</t> 
    14751535<t> 
    1476    <x:dfn>s-maxage</x:dfn> 
     1536   The max-age response directive indicates that the response is to be 
     1537   considered stale after its age is greater than the specified number of 
     1538   seconds. 
     1539</t> 
     1540<t> 
     1541   <x:h>Note:</x:h> This directive uses the token form of the argument syntax; 
     1542   e.g., 'max-age=5', not 'max-age="5"'. Senders &SHOULD-NOT; use the 
     1543   quoted-string form. 
     1544</t> 
     1545</section>       
     1546 
     1547<section title="s-maxage" anchor="cache-response-directive.s-maxage"> 
    14771548   <iref item="Cache Directives" primary="true" subitem="s-maxage" /> 
    14781549   <iref item="s-maxage" primary="true" subitem="Cache Directive" /> 
     1550<t> 
     1551   Argument syntax: 
    14791552   <list> 
    1480       <t>The s-maxage response directive indicates that, in shared caches, the 
    1481       maximum age specified by this directive overrides the maximum age 
    1482       specified by either the max-age directive or the Expires header field. The 
    1483       s-maxage directive also implies the semantics of the proxy-revalidate 
    1484       response directive.</t> 
     1553      <t> 
     1554        <x:ref>delta-seconds</x:ref> (see <xref target="delta-seconds"/>) 
     1555      </t> 
    14851556   </list> 
    14861557</t> 
    14871558<t> 
    1488    <x:dfn>no-transform</x:dfn> 
     1559   The s-maxage response directive indicates that, in shared caches, the 
     1560   maximum age specified by this directive overrides the maximum age 
     1561   specified by either the max-age directive or the Expires header field. The 
     1562   s-maxage directive also implies the semantics of the proxy-revalidate 
     1563   response directive. 
     1564</t> 
     1565<t> 
     1566   <x:h>Note:</x:h> This directive uses the token form of the argument syntax; 
     1567   e.g., 's-maxage=10', not 's-maxage="10"'. Senders &SHOULD-NOT; use the 
     1568   quoted-string form. 
     1569</t> 
     1570</section> 
     1571 
     1572<section title="no-transform" anchor="cache-response-directive.no-transform"> 
    14891573   <iref item="Cache Directives" primary="true" subitem="no-transform" /> 
    14901574   <iref item="no-transform" primary="true" subitem="Cache Directive" /> 
    1491    <list> 
    1492       <t>The no-transform response directive indicates that an intermediary 
    1493       (regardless of whether it implements a cache) &MUST-NOT; change the  
    1494       Content-Encoding, Content-Range or Content-Type response header fields,  
    1495       nor the response representation.</t> 
    1496    </list> 
     1575<t> 
     1576   The no-transform response directive indicates that an intermediary 
     1577   (regardless of whether it implements a cache) &MUST-NOT; change the  
     1578   Content-Encoding, Content-Range or Content-Type response header fields,  
     1579   nor the response representation. 
    14971580</t> 
     1581</section> 
    14981582 
    14991583</section> 
    15001584 
     
    19512035 
    19522036   <c>max-age</c> 
    19532037   <c> 
    1954       <xref target="cache-request-directive"/>, <xref target="cache-response-directive"/> 
     2038      <xref target="cache-request-directive.max-age"/>, <xref target="cache-response-directive.max-age"/> 
    19552039   </c> 
    19562040   <c>max-stale</c> 
    19572041   <c> 
    1958       <xref target="cache-request-directive"/> 
     2042      <xref target="cache-request-directive.max-stale"/> 
    19592043   </c> 
    19602044   <c>min-fresh</c> 
    19612045   <c> 
    1962       <xref target="cache-request-directive"/> 
     2046      <xref target="cache-request-directive.min-fresh"/> 
    19632047   </c> 
    19642048   <c>must-revalidate</c> 
    19652049   <c> 
    1966       <xref target="cache-response-directive"/> 
     2050      <xref target="cache-response-directive.must-revalidate"/> 
    19672051   </c> 
    19682052   <c>no-cache</c> 
    19692053   <c> 
    1970       <xref target="cache-request-directive"/>, <xref target="cache-response-directive"/> 
     2054      <xref target="cache-request-directive.no-cache"/>, <xref target="cache-response-directive.no-cache"/> 
    19712055   </c> 
    19722056   <c>no-store</c> 
    19732057   <c> 
    1974       <xref target="cache-request-directive"/>, <xref target="cache-response-directive"/> 
     2058      <xref target="cache-request-directive.no-store"/>, <xref target="cache-response-directive.no-store"/> 
    19752059   </c> 
    19762060   <c>no-transform</c> 
    19772061   <c> 
    1978       <xref target="cache-request-directive"/>, <xref target="cache-response-directive"/> 
     2062      <xref target="cache-request-directive.no-transform"/>, <xref target="cache-response-directive.no-transform"/> 
    19792063   </c> 
    19802064   <c>only-if-cached</c> 
    19812065   <c> 
    1982       <xref target="cache-request-directive"/> 
     2066      <xref target="cache-request-directive.only-if-cached"/> 
    19832067   </c> 
    19842068   <c>private</c> 
    19852069   <c> 
    1986       <xref target="cache-response-directive"/> 
     2070      <xref target="cache-response-directive.private"/> 
    19872071   </c> 
    19882072   <c>proxy-revalidate</c> 
    19892073   <c> 
    1990       <xref target="cache-response-directive"/> 
     2074      <xref target="cache-response-directive.proxy-revalidate"/> 
    19912075   </c> 
    19922076   <c>public</c> 
    19932077   <c> 
    1994       <xref target="cache-response-directive"/> 
     2078      <xref target="cache-response-directive.only-if-cached"/> 
    19952079   </c> 
    19962080   <c>s-maxage</c> 
    19972081   <c> 
    1998       <xref target="cache-response-directive"/> 
     2082      <xref target="cache-response-directive.s-maxage"/> 
    19992083   </c> 
    20002084   <c>stale-if-error</c> 
    20012085   <c> 
     
    24412525<x:ref>Warning</x:ref> = *( "," OWS ) warning-value *( OWS "," [ OWS warning-value ] 
    24422526 ) 
    24432527 
    2444 <x:ref>cache-directive</x:ref> = cache-request-directive / cache-response-directive 
    2445 <x:ref>cache-extension</x:ref> = token [ "=" ( token / quoted-string ) ] 
    2446 <x:ref>cache-request-directive</x:ref> = "no-cache" / "no-store" / ( "max-age=" 
    2447  delta-seconds ) / ( "max-stale" [ "=" delta-seconds ] ) / ( 
    2448  "min-fresh=" delta-seconds ) / "no-transform" / "only-if-cached" / 
    2449  cache-extension 
    2450 <x:ref>cache-response-directive</x:ref> = "public" / ( "private" [ "=" DQUOTE *( "," 
    2451  OWS ) field-name *( OWS "," [ OWS field-name ] ) DQUOTE ] ) / ( 
    2452  "no-cache" [ "=" DQUOTE *( "," OWS ) field-name *( OWS "," [ OWS 
    2453  field-name ] ) DQUOTE ] ) / "no-store" / "no-transform" / 
    2454  "must-revalidate" / "proxy-revalidate" / ( "max-age=" delta-seconds 
    2455  ) / ( "s-maxage=" delta-seconds ) / cache-extension 
     2528<x:ref>cache-directive</x:ref> = token [ "=" ( token / quoted-string ) ] 
    24562529 
    24572530<x:ref>delta-seconds</x:ref> = 1*DIGIT 
    24582531