Ticket #307: 307.2.diff

File 307.2.diff, 30.0 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, recipients ought to accept both
     1217   forms, even if one is documented to be preferred. For any other directive,
     1218   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> the preferred syntax for this argument is "token".
     1287   For compatibility with non-robust recipients, arguments &SHOULD; be sent
     1288   using the token syntax.
     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> the preferred syntax for this argument is "token".
     1313   For compatibility with non-robust recipients, arguments &SHOULD; be sent
     1314   using the token syntax.
     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</section>
     1337
     1338<section title="no-transform" anchor="cache-request-directive.no-transform">
    13121339   <iref item="Cache Directives" primary="true" subitem="no-transform" />
    13131340   <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>
     1341<t>
     1342   The no-transform request directive indicates that an intermediary
     1343   (whether or not it implements a cache) &MUST-NOT; change the
     1344   Content-Encoding, Content-Range or Content-Type request header fields,
     1345   nor the request representation.
    13201346</t>
    1321 <t>
    1322    <x:dfn>only-if-cached</x:dfn>
     1347</section>
     1348
     1349<section title="only-if-cached" anchor="cache-request-directive.only-if-cached">
    13231350   <iref item="Cache Directives" primary="true" subitem="only-if-cached" />
    13241351   <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>
     1352<t>
     1353   The only-if-cached request directive indicates that the client only
     1354   wishes to obtain a stored response. If it receives this directive, a
     1355   cache &SHOULD; either respond using a stored response that is consistent
     1356   with the other constraints of the request, or respond with a 504
     1357   (Gateway Timeout) status code. If a group of caches is being operated as
     1358   a unified system with good internal connectivity, a member cache &MAY;
     1359   forward such a request within that group of caches.
    13341360</t>
    13351361</section>
     1362</section>
    13361363
    13371364<section anchor="cache-response-directive"
    13381365   title="Response Cache-Control Directives">
    13391366   <x:anchor-alias value="cache-response-directive" />
    13401367
    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>
     1368<section title="public" anchor="cache-response-directive.only-if-cached">
    13581369   <iref item="Cache Directives" primary="true" subitem="public" />
    13591370   <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>
     1371<t>
     1372   The public response directive indicates that a response whose
     1373   associated request contains an 'Authentication' header &MAY; be
     1374   stored (see <xref target="caching.authenticated.responses" />).
    13651375</t>
    1366 <t>
    1367    <x:dfn>private</x:dfn>
     1376</section>
     1377
     1378<section title="private" anchor="cache-response-directive.private">
    13681379   <iref item="Cache Directives" primary="true" subitem="private" />
    13691380   <iref item="private" primary="true" subitem="Cache Directive" />
     1381<t>
     1382   Argument syntax:
    13701383   <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.
     1384      <t>
     1385        #<x:ref>field-name</x:ref>
    13811386      </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>
    13881387   </list>
    13891388</t>
    13901389<t>
    1391    <x:dfn>no-cache</x:dfn>
     1390   The private response directive indicates that the response message is
     1391   intended for a single user and &MUST-NOT; be stored by a shared cache. A
     1392   private cache &MAY; store the response.
     1393</t>
     1394<t>
     1395   If the private response directive specifies one or more field-names,
     1396   this requirement is limited to the field-values associated with the
     1397   listed response header fields. That is, a shared cache &MUST-NOT; store
     1398   the specified field-names(s), whereas it &MAY; store the remainder of the
     1399   response message.
     1400</t>
     1401<t>
     1402   The field-names given are not limited to the set of standard header
     1403   fields defined by this specification. Field names are case-insensitive.
     1404</t>
     1405<t>
     1406   <x:h>Note:</x:h> This usage of the word "private" only controls
     1407   where the response can be stored; it cannot ensure the privacy of the
     1408   message content. Also, private response directives with field-names are
     1409   often handled by implementations as if an unqualified private directive
     1410   was received; i.e., the special handling for the qualified form is not
     1411   widely implemented.
     1412</t>
     1413<t>
     1414   <x:h>Note:</x:h> the preferred syntax for this argument is "quoted-string".
     1415   For compatibility with non-robust recipients, even a single-entry list of
     1416   field names &SHOULD; be sent using the quoted-string syntax.
     1417</t>
     1418</section>
     1419
     1420<section title="no-cache" anchor="cache-response-directive.no-cache">
    13921421   <iref item="Cache Directives" primary="true" subitem="no-cache" />
    13931422   <iref item="no-cache" primary="true" subitem="Cache Directive" />
     1423<t>
     1424   Argument syntax:
    13941425   <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.
     1426      <t>
     1427        #<x:ref>field-name</x:ref>
    14101428      </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>
    14161429   </list>
    14171430</t>
    14181431<t>
    1419    <x:dfn>no-store</x:dfn>
     1432   The no-cache response directive indicates that the response &MUST-NOT;
     1433   be used to satisfy a subsequent request without successful validation on
     1434   the origin server. This allows an origin server to prevent a cache from
     1435   using it to satisfy a request without contacting it, even by caches that
     1436   have been configured to return stale responses.
     1437</t>
     1438<t>
     1439   If the no-cache response directive specifies one or more field-names,
     1440   then a cache &MAY; use the response to satisfy a subsequent request,
     1441   subject to any other restrictions on caching. However, any header fields
     1442   in the response that have the field-name(s) listed &MUST-NOT; be sent
     1443   in the response to a subsequent request without successful revalidation
     1444   with the origin server. This allows an origin server to prevent the
     1445   re-use of certain header fields in a response, while still allowing
     1446   caching of the rest of the response.
     1447</t>
     1448<t>
     1449   The field-names given are not limited to the set of standard header
     1450   fields defined by this specification. Field names are case-insensitive.
     1451</t>
     1452<t>
     1453   <x:h>Note:</x:h> Most HTTP/1.0 caches will not recognize or obey
     1454   this directive. Also, no-cache response directives with field-names are
     1455   often handled by implementations as if an unqualified no-cache directive
     1456   was received; i.e., the special handling for the qualified form is not
     1457   widely implemented.
     1458</t>
     1459<t>
     1460   <x:h>Note:</x:h> the preferred syntax for this argument is "quoted-string".
     1461   For compatibility with non-robust recipients, even a single-entry list of
     1462   field names &SHOULD; be sent using the quoted-string syntax.
     1463</t>
     1464</section>
     1465
     1466<section title="no-store" anchor="cache-response-directive.no-store">
    14201467   <iref item="Cache Directives" primary="true" subitem="no-store" />
    14211468   <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>
     1469<t>
     1470   The no-store response directive indicates that a cache &MUST-NOT;
     1471   store any part of either the immediate request or response. This
     1472   directive applies to both private and shared caches. "&MUST-NOT;
     1473   store" in this context means that the cache &MUST-NOT; intentionally
     1474   store the information in non-volatile storage, and &MUST; make a
     1475   best-effort attempt to remove the information from volatile storage as
     1476   promptly as possible after forwarding it.
    14351477</t>
    14361478<t>
    1437    <x:dfn>must-revalidate</x:dfn>
     1479   This directive is NOT a reliable or sufficient mechanism for ensuring
     1480   privacy. In particular, malicious or compromised caches might not
     1481   recognize or obey this directive, and communications networks might be
     1482   vulnerable to eavesdropping.
     1483</t>
     1484</section>
     1485
     1486<section title="must-revalidate" anchor="cache-response-directive.must-revalidate">
    14381487   <iref item="Cache Directives" primary="true" subitem="must-revalidate" />
    14391488   <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>
     1489<t>
     1490   The must-revalidate response directive indicates that once it has
     1491   become stale, a cache &MUST-NOT; use the response to satisfy subsequent
     1492   requests without successful validation on the origin server.
    14541493</t>
    14551494<t>
    1456    <x:dfn>proxy-revalidate</x:dfn>
     1495   The must-revalidate directive is necessary to support reliable
     1496   operation for certain protocol features. In all circumstances a
     1497   cache &MUST; obey the must-revalidate directive; in particular,
     1498   if a cache cannot reach the origin server for any reason, it &MUST;
     1499   generate a 504 (Gateway Timeout) response.
     1500</t>
     1501<t>
     1502   The must-revalidate directive ought to be used by servers if and only
     1503   if failure to validate a request on the representation could result in
     1504   incorrect operation, such as a silently unexecuted financial
     1505   transaction.
     1506</t>
     1507</section>
     1508
     1509<section title="proxy-revalidate" anchor="cache-response-directive.proxy-revalidate">
    14571510   <iref item="Cache Directives" primary="true" subitem="proxy-revalidate" />
    14581511   <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>
     1512<t>
     1513   The proxy-revalidate response directive has the same meaning as the
     1514   must-revalidate response directive, except that it does not apply to
     1515   private caches.
    14641516</t>
    1465 <t>
    1466    <x:dfn>max-age</x:dfn>
     1517</section>
     1518
     1519<section title="max-age" anchor="cache-response-directive.max-age">
    14671520   <iref item="Cache Directives" primary="true" subitem="max-age" />
    14681521   <iref item="max-age" primary="true" subitem="Cache Directive" />
     1522<t>
     1523   Argument syntax:
    14691524   <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>
     1525      <t>
     1526        <x:ref>delta-seconds</x:ref> (see <xref target="delta-seconds"/>)
     1527      </t>
    14731528   </list>
    14741529</t>
    14751530<t>
    1476    <x:dfn>s-maxage</x:dfn>
     1531   The max-age response directive indicates that the response is to be
     1532   considered stale after its age is greater than the specified number of
     1533   seconds.
     1534</t>
     1535<t>
     1536   <x:h>Note:</x:h> the preferred syntax for this argument is "token".
     1537   For compatibility with non-robust recipients, arguments &SHOULD; be sent
     1538   using the token syntax.
     1539</t>
     1540</section>     
     1541
     1542<section title="s-maxage" anchor="cache-response-directive.s-maxage">
    14771543   <iref item="Cache Directives" primary="true" subitem="s-maxage" />
    14781544   <iref item="s-maxage" primary="true" subitem="Cache Directive" />
     1545<t>
     1546   Argument syntax:
    14791547   <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>
     1548      <t>
     1549        <x:ref>delta-seconds</x:ref> (see <xref target="delta-seconds"/>)
     1550      </t>
    14851551   </list>
    14861552</t>
    14871553<t>
    1488    <x:dfn>no-transform</x:dfn>
     1554   The s-maxage response directive indicates that, in shared caches, the
     1555   maximum age specified by this directive overrides the maximum age
     1556   specified by either the max-age directive or the Expires header field. The
     1557   s-maxage directive also implies the semantics of the proxy-revalidate
     1558   response directive.
     1559</t>
     1560<t>
     1561   <x:h>Note:</x:h> the preferred syntax for this argument is "token".
     1562   For compatibility with non-robust recipients, arguments &SHOULD; be sent
     1563   using the token syntax.
     1564</t>
     1565</section>
     1566
     1567<section title="no-transform" anchor="cache-response-directive.no-transform">
    14891568   <iref item="Cache Directives" primary="true" subitem="no-transform" />
    14901569   <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>
     1570<t>
     1571   The no-transform response directive indicates that an intermediary
     1572   (regardless of whether it implements a cache) &MUST-NOT; change the
     1573   Content-Encoding, Content-Range or Content-Type response header fields,
     1574   nor the response representation.
    14971575</t>
     1576</section>
    14981577
    14991578</section>
    15001579
     
    19512030
    19522031   <c>max-age</c>
    19532032   <c>
    1954       <xref target="cache-request-directive"/>, <xref target="cache-response-directive"/>
     2033      <xref target="cache-request-directive.max-age"/>, <xref target="cache-response-directive.max-age"/>
    19552034   </c>
    19562035   <c>max-stale</c>
    19572036   <c>
    1958       <xref target="cache-request-directive"/>
     2037      <xref target="cache-request-directive.max-stale"/>
    19592038   </c>
    19602039   <c>min-fresh</c>
    19612040   <c>
    1962       <xref target="cache-request-directive"/>
     2041      <xref target="cache-request-directive.min-fresh"/>
    19632042   </c>
    19642043   <c>must-revalidate</c>
    19652044   <c>
    1966       <xref target="cache-response-directive"/>
     2045      <xref target="cache-response-directive.must-revalidate"/>
    19672046   </c>
    19682047   <c>no-cache</c>
    19692048   <c>
    1970       <xref target="cache-request-directive"/>, <xref target="cache-response-directive"/>
     2049      <xref target="cache-request-directive.no-cache"/>, <xref target="cache-response-directive.no-cache"/>
    19712050   </c>
    19722051   <c>no-store</c>
    19732052   <c>
    1974       <xref target="cache-request-directive"/>, <xref target="cache-response-directive"/>
     2053      <xref target="cache-request-directive.no-store"/>, <xref target="cache-response-directive.no-store"/>
    19752054   </c>
    19762055   <c>no-transform</c>
    19772056   <c>
    1978       <xref target="cache-request-directive"/>, <xref target="cache-response-directive"/>
     2057      <xref target="cache-request-directive.no-transform"/>, <xref target="cache-response-directive.no-transform"/>
    19792058   </c>
    19802059   <c>only-if-cached</c>
    19812060   <c>
    1982       <xref target="cache-request-directive"/>
     2061      <xref target="cache-request-directive.only-if-cached"/>
    19832062   </c>
    19842063   <c>private</c>
    19852064   <c>
    1986       <xref target="cache-response-directive"/>
     2065      <xref target="cache-response-directive.private"/>
    19872066   </c>
    19882067   <c>proxy-revalidate</c>
    19892068   <c>
    1990       <xref target="cache-response-directive"/>
     2069      <xref target="cache-response-directive.proxy-revalidate"/>
    19912070   </c>
    19922071   <c>public</c>
    19932072   <c>
    1994       <xref target="cache-response-directive"/>
     2073      <xref target="cache-response-directive.only-if-cached"/>
    19952074   </c>
    19962075   <c>s-maxage</c>
    19972076   <c>
    1998       <xref target="cache-response-directive"/>
     2077      <xref target="cache-response-directive.s-maxage"/>
    19992078   </c>
    20002079   <c>stale-if-error</c>
    20012080   <c>
     
    24412520<x:ref>Warning</x:ref> = *( "," OWS ) warning-value *( OWS "," [ OWS warning-value ]
    24422521 )
    24432522
    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
     2523<x:ref>cache-directive</x:ref> = token [ "=" ( token / quoted-string ) ]
    24562524
    24572525<x:ref>delta-seconds</x:ref> = 1*DIGIT
    24582526