Ticket #307: 307.3.diff

File 307.3.diff, 30.1 KB (added by julian.reschke@…, 10 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