rfc9213.original.xml   rfc9213.xml 
<?xml version='1.0' encoding='utf-8'?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE rfc [ <!DOCTYPE rfc [
<!ENTITY nbsp "&#160;"> <!ENTITY nbsp "&#160;">
<!ENTITY zwsp "&#8203;"> <!ENTITY zwsp "&#8203;">
<!ENTITY nbhy "&#8209;"> <!ENTITY nbhy "&#8209;">
<!ENTITY wj "&#8288;"> <!ENTITY wj "&#8288;">
]> ]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?> <rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft
<!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.5.24 --> -ietf-httpbis-targeted-cache-control-04" number="9213" submissionType="IETF" cat
<?rfc tocindent="yes"?> egory="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" ob
<?rfc strict="yes"?> soletes="" updates="" xml:lang="en" version="3">
<?rfc compact="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft
-ietf-httpbis-targeted-cache-control-04" category="std" consensus="true" tocIncl
ude="true" sortRefs="true" symRefs="true" obsoletes="" updates="" submissionType
="IETF" xml:lang="en" version="3">
<!-- xml2rfc v2v3 conversion 3.12.0 -->
<front> <front>
<title>Targeted HTTP Cache Control</title> <title abbrev="Targeted HTTP Cache Control">Targeted HTTP Cache Control</tit
<seriesInfo name="Internet-Draft" value="draft-ietf-httpbis-targeted-cache-c le>
ontrol-04"/> <seriesInfo name="RFC" value="9213"/>
<author initials="S." surname="Ludin" fullname="Stephen Ludin"> <author initials="S." surname="Ludin" fullname="Stephen Ludin">
<organization>Akamai</organization> <organization>Akamai</organization>
<address> <address>
<email>sludin@ludin.org</email> <email>sludin@ludin.org</email>
</address> </address>
</author> </author>
<author initials="M." surname="Nottingham" fullname="Mark Nottingham"> <author initials="M." surname="Nottingham" fullname="Mark Nottingham">
<organization>Fastly</organization> <organization>Fastly</organization>
<address> <address>
<postal> <postal>
skipping to change at line 43 skipping to change at line 35
<email>mnot@mnot.net</email> <email>mnot@mnot.net</email>
<uri>https://www.mnot.net/</uri> <uri>https://www.mnot.net/</uri>
</address> </address>
</author> </author>
<author initials="Y." surname="Wu" fullname="Yuchen Wu"> <author initials="Y." surname="Wu" fullname="Yuchen Wu">
<organization>Cloudflare</organization> <organization>Cloudflare</organization>
<address> <address>
<email>me@yuchenwu.net</email> <email>me@yuchenwu.net</email>
</address> </address>
</author> </author>
<date/> <date year="2022" month="June" />
<area>Applications and Real-Time</area> <area>Applications and Real-Time</area>
<workgroup>HTTP</workgroup> <workgroup>HTTP</workgroup>
<keyword>CDN</keyword> <keyword>CDN</keyword>
<keyword>Content Delivery Network</keyword> <keyword>Content Delivery Network</keyword>
<keyword>Caching</keyword> <keyword>Caching</keyword>
<abstract> <abstract>
<t>This specification defines a convention for HTTP response header fields
that allow cache directives to be targeted at specific caches or classes of cac <t>
hes. It also defines one such header field, targeted at Content Delivery Network This specification defines a convention for HTTP response header fields that all
(CDN) caches.</t> ow cache directives to be targeted at specific caches or classes of caches. It a
lso defines one such header field, the CDN-Cache-Control response header field,
which is targeted at content delivery network (CDN) caches.
</t>
</abstract> </abstract>
<note removeInRFC="true">
<name>About This Document</name>
<t>
Status information for this document may be found at <eref target="https
://datatracker.ietf.org/doc/draft-ietf-httpbis-targeted-cache-control/"/>.
</t>
<t>
Discussion of this document takes place on the
HTTP Working Group mailing list (<eref target="mailto:ietf-http-wg@w3.or
g"/>),
which is archived at <eref target="https://lists.w3.org/Archives/Public/
ietf-http-wg/"/>.
Working Group information can be found at <eref target="https://httpwg.o
rg/"/>.
</t>
<t>Source for this draft and an issue tracker can be found at
<eref target="https://github.com/httpwg/http-extensions/labels/targeted-
cc"/>.</t>
</note>
</front> </front>
<middle> <middle>
<section anchor="introduction" numbered="true" toc="default"> <section anchor="introduction" numbered="true" toc="default">
<name>Introduction</name> <name>Introduction</name>
<t>Modern deployments of HTTP often use multiple layers of caching. For ex <t>Modern deployments of HTTP often use multiple layers of caching. For ex
ample, a website might use a cache on the origin server itself; it might deploy ample, a website might use a cache on the origin server itself; it might deploy
a caching layer in the same network as the origin server, it might use one or mo a caching layer in the same network as the origin server, it might use one or mo
re Content Delivery Networks (CDNs) that are distributed throughout the Internet re CDNs that are distributed throughout the Internet, and it might benefit from
, and it might benefit from browser caching as well.</t> browser caching as well.</t>
<t>Because it is often desirable to control these different classes of cac
hes separately, some means of targeting cache directives at them is necessary. F <t>Because it is often desirable to control these different classes of cac
or example, if a publisher has a mechanism to invalidate the contents of a cache hes separately, some means of targeting cache directives at them is necessary. F
that it has a relationship with (such as a CDN cache), they might be more comfo or example, if a publisher has a mechanism to invalidate the contents of a cache
rtable assigning a more generous caching policy to it, while still wanting to re that it has a relationship with (such as a CDN cache), they might be more comfo
strict the behavior of other caches.</t> rtable assigning a more generous caching policy to it while still wanting to res
<t>The HTTP Cache-Control response header field (defined in <xref section= trict the behavior of other caches.</t>
"5.2" sectionFormat="of" target="HTTP-CACHING" format="default"/>) is widely use <t>The HTTP Cache-Control response header field (defined in <xref section=
d to direct caching behavior. However, it is relatively undifferentiated; while "5.2" sectionFormat="of" target="HTTP-CACHING" format="default"/>) is widely use
some cache directives (e.g., s-maxage) are targeted at a specific class of cache d to direct caching behavior. However, it is relatively undifferentiated; while
s (for s-maxage, shared caches), targeting is not consistently available across some cache directives (e.g., s-maxage) are targeted at a specific class of cache
all existing cache directives (e.g., stale-while-revalidate). This is problemati s (for s-maxage, shared caches), targeting is not consistently available across
c, especially as the number of caching extensions grows, along with the number o all existing cache directives (e.g., stale-while-revalidate). This is problemati
f potential targets.</t> c especially as the number of caching extensions grows along with the number of
potential targets.</t>
<t>Some implementations have defined ad hoc control mechanisms to overcome this issue, but their interoperability is low. <xref target="targeted" format=" default"/> defines a standard framework for targeted cache control using HTTP re sponse headers, and <xref target="cdn-cache-control" format="default"/> defines one such header: the CDN-Cache-Control response header field.</t> <t>Some implementations have defined ad hoc control mechanisms to overcome this issue, but their interoperability is low. <xref target="targeted" format=" default"/> defines a standard framework for targeted cache control using HTTP re sponse headers, and <xref target="cdn-cache-control" format="default"/> defines one such header: the CDN-Cache-Control response header field.</t>
<section anchor="notational-conventions" numbered="true" toc="default"> <section anchor="notational-conventions" numbered="true" toc="default">
<name>Notational Conventions</name> <name>Notational Conventions</name>
<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", " <t>
SHOULD", "SHOULD NOT", The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>",
"RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
be interpreted as NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>",
described in BCP 14 <xref target="RFC2119" format="default"/> <xref target="RFC8 "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
174" format="default"/> when, and only when, they appear in all capitals, as "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are
shown here.</t> to be interpreted as described in BCP&nbsp;14 <xref target="RFC2119"/>
<xref target="RFC8174"/> when, and only when, they appear in all capitals,
as shown here.
</t>
</section> </section>
</section> </section>
<section anchor="targeted" numbered="true" toc="default"> <section anchor="targeted" numbered="true" toc="default">
<name>Targeted Cache-Control Header Fields</name> <name>Targeted Cache-Control Header Fields</name>
<t>A Targeted Cache-Control Header Field (hereafter, "targeted field") is an HTTP response header field that has the same semantics as the Cache-Control r esponse header field (<xref section="5.2" sectionFormat="comma" target="HTTP-CAC HING" format="default"/>). However, it has a distinct field name that indicates the target for its cache directives.</t> <t>A Targeted Cache-Control Header Field (hereafter "targeted field") is a n HTTP response header field that has the same semantics as the Cache-Control re sponse header field (<xref section="5.2" sectionFormat="comma" target="HTTP-CACH ING" format="default"/>). However, it has a distinct field name that indicates t he target for its cache directives.</t>
<t>For example:</t> <t>For example:</t>
<sourcecode type="http-message"><![CDATA[ <sourcecode type="http-message"><![CDATA[
CDN-Cache-Control: max-age=60 CDN-Cache-Control: max-age=60
]]></sourcecode> ]]></sourcecode>
<t>is a targeted field that applies to Content Delivery Networks (CDNs), a s defined in <xref target="cdn-cache-control" format="default"/>.</t> <t>is a targeted field that applies to CDNs, as defined in <xref target="c dn-cache-control" format="default"/>.</t>
<section anchor="syntax" numbered="true" toc="default"> <section anchor="syntax" numbered="true" toc="default">
<name>Syntax</name> <name>Syntax</name>
<t>Targeted fields are Dictionary Structured Fields (<xref section="3.2" sectionFormat="of" target="STRUCTURED-FIELDS" format="default"/>). Each member of the dictionary is an HTTP cache response directive (<xref section="5.2.2" sec tionFormat="of" target="HTTP-CACHING" format="default"/>) including extension re sponse directives (as per <xref section="5.2.3" sectionFormat="of" target="HTTP- CACHING" format="default"/>). Note that while targeted fields often have the sam e syntax as Cache-Control fields, differences in error handling mean that using a Cache-Control parser rather than a Structured Fields parser can introduce inte roperability issues.</t> <t>Targeted fields are Dictionary Structured Fields (<xref section="3.2" sectionFormat="of" target="RFC8941" format="default"/>). Each member of the Dic tionary is an HTTP cache response directive (<xref section="5.2.2" sectionFormat ="of" target="HTTP-CACHING" format="default"/>) including extension response dir ectives (as per <xref section="5.2.3" sectionFormat="of" target="HTTP-CACHING" f ormat="default"/>). Note that while targeted fields often have the same syntax a s Cache-Control fields, differences in error handling mean that using a Cache-Co ntrol parser rather than a Structured Fields parser can introduce interoperabili ty issues.</t>
<t>Because cache directives are not defined in terms of structured data types, it is necessary to map their values into the appropriate types. <xref sec tion="5.2" sectionFormat="of" target="HTTP-CACHING" format="default"/> defines c ache directive values to be either absent, a quoted-string, or a token.</t> <t>Because cache directives are not defined in terms of structured data types, it is necessary to map their values into the appropriate types. <xref sec tion="5.2" sectionFormat="of" target="HTTP-CACHING" format="default"/> defines c ache directive values to be either absent, a quoted-string, or a token.</t>
<t>This means that cache directives that have no value will be mapped to <t>This means that cache directives that have no value will be mapped to
a Boolean (<xref section="3.3.6" sectionFormat="of" target="STRUCTURED-FIELDS" a Boolean (<xref section="3.3.6" sectionFormat="of" target="RFC8941" format="de
format="default"/>). When the value is a quoted-string, it will be mapped to a S fault"/>). When the value is a quoted-string, it will be mapped to a String (<xr
tring (<xref section="3.3.3" sectionFormat="of" target="STRUCTURED-FIELDS" forma ef section="3.3.3" sectionFormat="of" target="RFC8941" format="default"/>), and
t="default"/>), and when it is a token, it will map to a Token (<xref section="3 when it is a token, it will map to a Token (<xref section="3.3.4" sectionFormat=
.3.4" sectionFormat="of" target="STRUCTURED-FIELDS" format="default"/>), an Inte "of" target="RFC8941" format="default"/>), an Integer (<xref section="3.3.1" sec
ger (<xref section="3.3.1" sectionFormat="of" target="STRUCTURED-FIELDS" format= tionFormat="of" target="RFC8941" format="default"/>), or a Decimal (<xref sectio
"default"/>) or a Decimal (<xref section="3.3.2" sectionFormat="of" target="STRU n="3.3.2" sectionFormat="of" target="RFC8941" format="default"/>), depending on
CTURED-FIELDS" format="default"/>), depending on the content of the value.</t> the content of the value.</t>
<t>For example, the max-age directive (<xref section="5.2.2.1" sectionFo <t>For example, the max-age directive (<xref section="5.2.2.1" sectionFo
rmat="of" target="HTTP-CACHING" format="default"/>) has an integer value; no-sto rmat="of" target="HTTP-CACHING" format="default"/>) has an integer value; no-sto
re (<xref section="5.2.2.5" sectionFormat="of" target="HTTP-CACHING" format="def re (<xref section="5.2.2.5" sectionFormat="of" target="HTTP-CACHING" format="def
ault"/>) always has a boolean true value, and no-cache (<xref section="5.2.2.4" ault"/>) always has a Boolean true value, and no-cache (<xref section="5.2.2.4"
sectionFormat="of" target="HTTP-CACHING" format="default"/>) has a value that ca sectionFormat="of" target="HTTP-CACHING" format="default"/>) has a value that ca
n either be boolean true or a string containing a comma-delimited list of field n be either Boolean true or a string containing a comma-delimited list of field
names.</t> names.</t>
<t>Implementations MUST NOT generate values that violate these inferred <t>Implementations <bcp14>MUST NOT</bcp14> generate values that violate
constraints on the cache directive's value. In particular, string values whose f these inferred constraints on the cache directive's value. In particular, string
irst character is not alphabetic or "*" MUST be generated as structured Strings, values whose first character is not alphabetic or "*" <bcp14>MUST</bcp14> be ge
so they are not mistaken for other types.</t> nerated as Strings so that they are not mistaken for other types.</t>
<t>Implementations SHOULD NOT consume values that violate these inferred <t>Implementations <bcp14>SHOULD NOT</bcp14> consume values that violate
constraints. For example, a consuming implementation that coerces a max-age wit these inferred constraints. For example, a consuming implementation that coerce
h a decimal value into an integer would behave differently than other implementa s a max-age with a decimal value into an integer would behave differently than o
tions, potentially causing interoperability issues.</t> ther implementations, potentially causing interoperability issues.</t>
<t>Parameters received on cache directives are to be ignored, unless oth er handling is explicitly specified.</t> <t>Parameters received on cache directives are to be ignored, unless oth er handling is explicitly specified.</t>
<t>If a targeted field in a given response is empty, or a parsing error
is encountered, that field MUST be ignored by the cache (i.e., it behaves as if <t>If a targeted field in a given response is empty, or a parsing error i
the field were not present, likely falling back to other cache-control mechanism s encountered, that field <bcp14>MUST</bcp14> be ignored by the cache (i.e., it
s present).</t> behaves as if the field were not present, likely falling back to other cache-con
trol mechanisms present).</t>
</section> </section>
<section anchor="cache-behavior" numbered="true" toc="default"> <section anchor="cache-behavior" numbered="true" toc="default">
<name>Cache Behavior</name> <name>Cache Behavior</name>
<t>A cache that implements this specification maintains a <em>target lis
t</em> - an ordered list of the targeted field names that it uses for caching po <t>A cache that implements this specification maintains a target list. A
licy, with the order reflecting priority from most applicable to least. The targ target list is an ordered list of the targeted field names that it uses for cach
et list might be fixed, user-configurable, or generated per request, depending u ing policy, with the order reflecting priority from most applicable to least. Th
pon the implementation.</t> e target list might be fixed, user configurable, or generated per request, depen
ding upon the implementation.</t>
<t>For example, a CDN cache might support both CDN-Cache-Control and a h eader specific to that CDN, ExampleCDN-Cache-Control, with the latter overriding the former. Its target list would be:</t> <t>For example, a CDN cache might support both CDN-Cache-Control and a h eader specific to that CDN, ExampleCDN-Cache-Control, with the latter overriding the former. Its target list would be:</t>
<artwork name="" type="" align="left" alt=""><![CDATA[
<artwork align="left" ><![CDATA[
[ExampleCDN-Cache-Control, CDN-Cache-Control] [ExampleCDN-Cache-Control, CDN-Cache-Control]
]]></artwork> ]]></artwork>
<t>When a cache that implements this specification receives a response w <t>When a cache that implements this specification receives a response w
ith one or more of the header field names on its target list, the cache MUST sel ith one or more of the header field names on its target list, the cache <bcp14>M
ect the first (in target list order) field with a valid, non-empty value and use UST</bcp14> select the first (in target-list order) field with a valid, non-empt
its value to determine the caching policy for the response, and MUST ignore the y value and use its value to determine the caching policy for the response, and
Cache-Control and Expires header fields in that response, unless no valid, non- it <bcp14>MUST</bcp14> ignore the Cache-Control and Expires header fields in tha
empty value is available from the listed header fields.</t> t response, unless no valid, non-empty value is available from the listed header
<t>Note that this occurs on a response-by-response basis; if no member o fields.</t>
f the cache's target list is present, valid and non-empty, a cache falls back to <t>Note that this occurs on a response-by-response basis; if no member o
other cache control mechanisms as required by HTTP <xref target="HTTP-CACHING" f the cache's target list is present, valid, and non-empty, a cache falls back t
format="default"/>.</t> o other cache control mechanisms as required by HTTP <xref target="HTTP-CACHING"
<t>Targeted fields that are not on a cache's target list MUST NOT change format="default"/>.</t>
that cache's behaviour, and MUST be passed through.</t> <t>Targeted fields that are not on a cache's target list <bcp14>MUST NOT
<t>Caches that use a targeted field MUST implement the semantics of the </bcp14> change that cache's behavior and <bcp14>MUST</bcp14> be passed through.
following cache directives:</t> </t>
<t>Caches that use a targeted field <bcp14>MUST</bcp14> implement the se
mantics of the following cache directives:</t>
<ul spacing="normal"> <ul spacing="normal">
<li>max-age</li> <li>max-age</li>
<li>must-revalidate</li> <li>must-revalidate</li>
<li>no-store</li> <li>no-store</li>
<li>no-cache</li> <li>no-cache</li>
<li>private</li> <li>private</li>
</ul> </ul>
<t>Furthermore, they SHOULD implement other cache directives (including <t>Furthermore, they <bcp14>SHOULD</bcp14> implement other cache directi
extension cache directives) that they support in the Cache-Control response head ves (including extension cache directives) that they support in the Cache-Contro
er field.</t> l response header field.</t>
<t>The semantics and precedence of cache directives in a targeted field <t>The semantics and precedence of cache directives in a targeted field
are the same as those in Cache-Control. In particular, no-store and no-cache mak are the same as those in Cache-Control. In particular, no-store and no-cache mak
e max-age inoperative, and unrecognised extension directives are ignored.</t> e max-age inoperative, and unrecognized extension directives are ignored.</t>
</section> </section>
<section anchor="interaction-with-http-freshness" numbered="true" toc="def ault"> <section anchor="interaction-with-http-freshness" numbered="true" toc="def ault">
<name>Interaction with HTTP Freshness</name> <name>Interaction with HTTP Freshness</name>
<t>HTTP caching has a single, end-to-end freshness model defined in <xre f section="4.2" sectionFormat="of" target="HTTP-CACHING" format="default"/>. Whe n additional freshness mechanisms are only available to some caches along a requ est path (for example, using targeted fields), their interactions need to be car efully considered. In particular, a targeted cache might have longer freshness l ifetimes available to it than other caches, causing it to serve responses that a ppear to be prematurely (or even immediately) stale to those other caches, negat ively impacting cache efficiency.</t> <t>HTTP caching has a single, end-to-end freshness model defined in <xre f section="4.2" sectionFormat="of" target="HTTP-CACHING" format="default"/>. Whe n additional freshness mechanisms are only available to some caches along a requ est path (for example, using targeted fields), their interactions need to be car efully considered. In particular, a targeted cache might have longer freshness l ifetimes available to it than other caches, causing it to serve responses that a ppear to be prematurely (or even immediately) stale to those other caches, negat ively impacting cache efficiency.</t>
<t>For example, a response stored by a CDN cache might be served with th e following headers:</t> <t>For example, a response stored by a CDN cache might be served with th e following headers:</t>
<sourcecode type="http-message"><![CDATA[ <sourcecode type="http-message"><![CDATA[
Age: 1800 Age: 1800
Cache-Control: max-age=600 Cache-Control: max-age=600
CDN-Cache-Control: max-age=3600 CDN-Cache-Control: max-age=3600
]]></sourcecode> ]]></sourcecode>
<t>From the CDN's perspective, this response is still fresh after being cached for 30 minutes, while from other caches' standpoint, this response is alr eady stale. See <xref target="AGE-PENALTY" format="default"/> for more discussio n.</t> <t>From the CDN's perspective, this response is still fresh after being cached for 30 minutes, while from the standpoint of other caches, this response is already stale. See <xref target="AGE-PENALTY" format="default"/> for more dis cussion.</t>
<t>When the targeted cache has a strong coherence mechanism (e.g., the o rigin server has the ability to proactively invalidate cached responses), it is often desirable to mitigate these effects. Some techniques seen in deployments i nclude:</t> <t>When the targeted cache has a strong coherence mechanism (e.g., the o rigin server has the ability to proactively invalidate cached responses), it is often desirable to mitigate these effects. Some techniques seen in deployments i nclude:</t>
<ul spacing="normal"> <ul spacing="normal">
<li>Removing the Age header field</li> <li>Removing the Age header field</li>
<li>Updating the Date header field value to the current time</li> <li>Updating the Date header field value to the current time</li>
<li>Updating the Expires header field value to the current time, plus any Cache-Control: max-age value</li> <li>Updating the Expires header field value to the current time, plus any Cache-Control: max-age value</li>
</ul> </ul>
<t>This specification does not place any specific requirements on implem entations to mitigate these effects, but definitions of targeted fields can do s o.</t> <t>This specification does not place any specific requirements on implem entations to mitigate these effects, but definitions of targeted fields can do s o.</t>
</section> </section>
<section anchor="defining-targeted-fields" numbered="true" toc="default"> <section anchor="defining-targeted-fields" numbered="true" toc="default">
<name>Defining Targeted Fields</name> <name>Defining Targeted Fields</name>
<t>A targeted field for a particular class of cache can be defined by re <t>A targeted field for a particular class of cache can be defined by re
questing registration in the Hypertext Transfer Protocol (HTTP) Field Name Regis questing registration in the "Hypertext Transfer Protocol (HTTP) Field Name Regi
try (<eref target="https://www.iana.org/assignments/http-fields/"/>).</t> stry" (<eref target="https://www.iana.org/assignments/http-fields/" brackets="an
<t>Registration requests can use this document as the specification docu gle"/>).</t>
ment, in which case the Comments field should clearly define the class of caches <t>Registration requests can use this document as the specification docu
that the targeted field applies to. Alternatively, if other documentation for t ment; in which case, the Comments field should clearly define the class of cache
he field has been created, it can be used as the specification document.</t> s that the targeted field applies to. Alternatively, if other documentation for
<t>By convention, targeted fields have the suffix "-Cache-Control": e.g. the field has been created, it can be used as the specification document.</t>
, "ExampleCDN-Cache-Control". However, this suffix MUST NOT be used on its own t <t>By convention, targeted fields have the suffix "-Cache-Control", e.g.
o identify targeted fields; it is only a convention.</t> , "ExampleCDN-Cache-Control". However, this suffix <bcp14>MUST NOT</bcp14> be us
ed on its own to identify targeted fields; it is only a convention.</t>
</section> </section>
</section> </section>
<section anchor="cdn-cache-control" numbered="true" toc="default"> <section anchor="cdn-cache-control" numbered="true" toc="default">
<name>The CDN-Cache-Control Targeted Field</name> <name>The CDN-Cache-Control Targeted Field</name>
<t>The CDN-Cache-Control response header field is a targeted field (<xref <t>The CDN-Cache-Control response header field is a targeted field (<xref
target="targeted" format="default"/>) that allows origin servers to control the target="targeted" format="default"/>) that allows origin servers to control the
behaviour of CDN caches interposed between them and clients, separately from oth behavior of CDN caches interposed between them and clients separately from other
er caches that might handle the response.</t> caches that might handle the response.</t>
<t>It applies to caches that are part of a distributed network that operat <t>It applies to caches that are part of a distributed network that operat
e on behalf of an origin server (commonly called a Content Delivery Network or C e on behalf of an origin server (commonly called a CDN).</t>
DN).</t> <t>CDN caches that use CDN-Cache-Control will typically forward this heade
<t>CDN caches that use CDN-Cache-Control will typically forward this heade r so that downstream CDN caches can use it as well. However, they <bcp14>MAY</bc
r so that downstream CDN caches can use it as well. However, they MAY remove it p14> remove it when this is undesirable (for example, when configured to do so b
when this is undesirable (for example, when configured to do so because it is kn ecause it is known not to be used downstream).</t>
own not to be used downstream).</t>
<section anchor="examples" numbered="true" toc="default"> <section anchor="examples" numbered="true" toc="default">
<name>Examples</name> <name>Examples</name>
<t>For example, the following header fields would instruct a CDN cache ( i.e., a cache with a target list of <tt>[CDN-Cache-Control]</tt>) to consider th e response fresh for 600 seconds, other shared caches to consider the response f resh for 120 seconds, and any remaining caches to consider the response fresh fo r 60 seconds:</t> <t>For example, the following header fields would instruct a CDN cache ( i.e., a cache with a target list of <tt>[CDN-Cache-Control]</tt>) to consider th e response fresh for 600 seconds, other shared caches to consider the response f resh for 120 seconds, and any remaining caches to consider the response fresh fo r 60 seconds:</t>
<sourcecode type="http-message"><![CDATA[ <sourcecode type="http-message"><![CDATA[
Cache-Control: max-age=60, s-maxage=120 Cache-Control: max-age=60, s-maxage=120
CDN-Cache-Control: max-age=600 CDN-Cache-Control: max-age=600
]]></sourcecode> ]]></sourcecode>
<t>These header fields would instruct a CDN cache to consider the respon se fresh for 600 seconds, while all other caches would be prevented from storing it:</t> <t>These header fields would instruct a CDN cache to consider the respon se fresh for 600 seconds, while all other caches would be prevented from storing it:</t>
<sourcecode type="http-message"><![CDATA[ <sourcecode type="http-message"><![CDATA[
CDN-Cache-Control: max-age=600 CDN-Cache-Control: max-age=600
skipping to change at line 173 skipping to change at line 166
]]></sourcecode> ]]></sourcecode>
<t>Because CDN-Cache-Control is not present, this header field would pre vent all caches from storing the response:</t> <t>Because CDN-Cache-Control is not present, this header field would pre vent all caches from storing the response:</t>
<sourcecode type="http-message"><![CDATA[ <sourcecode type="http-message"><![CDATA[
Cache-Control: no-store Cache-Control: no-store
]]></sourcecode> ]]></sourcecode>
<t>Whereas these would prevent all caches except for CDN caches from sto ring the response:</t> <t>Whereas these would prevent all caches except for CDN caches from sto ring the response:</t>
<sourcecode type="http-message"><![CDATA[ <sourcecode type="http-message"><![CDATA[
Cache-Control: no-store Cache-Control: no-store
CDN-Cache-Control: none CDN-Cache-Control: none
]]></sourcecode> ]]></sourcecode>
<t>(note that 'none' is not a registered cache directive; it is here to avoid sending a header field with an empty value, which would be ignored)</t> <t>(Note that 'none' is not a registered cache directive; it is here to avoid sending a header field with an empty value, which would be ignored.)</t>
</section> </section>
</section> </section>
<section anchor="iana-considerations" numbered="true" toc="default"> <section anchor="iana-considerations" numbered="true" toc="default">
<name>IANA Considerations</name> <name>IANA Considerations</name>
<t>Please register the following entry in the Hypertext Transfer Protocol <t>IANA has registered the following entry in the "Hypertext Transfer Prot
(HTTP) Field Name Registry ocol (HTTP) Field Name Registry" defined by <xref target="HTTP" format="default"
defined by <xref target="HTTP" format="default"/>:</t> />:</t>
<ul spacing="normal"> <dl spacing="compact">
<li>Field Name: CDN-Cache-Control</li> <dt>Field Name:</dt>
<li>Status: permanent</li> <dd>CDN-Cache-Control</dd>
<li>Specification Document: [this document]</li> <dt>Status:</dt>
<li>Comments: Cache directives targeted at Content Delivery Networks</li <dd>permanent</dd>
> <dt>Specification Document:</dt>
</ul> <dd>RFC 9213</dd>
<dt>Comments:</dt>
<dd>Cache directives targeted at content delivery networks</dd>
</dl>
</section> </section>
<section anchor="security-considerations" numbered="true" toc="default"> <section anchor="security-considerations" numbered="true" toc="default">
<name>Security Considerations</name> <name>Security Considerations</name>
<t>The security considerations of HTTP caching <xref target="HTTP-CACHING" format="default"/> apply.</t> <t>The security considerations of HTTP caching <xref target="HTTP-CACHING" format="default"/> apply.</t>
<t>The ability to carry multiple caching policies on a response can result in confusion about how a response will be cached in different systems, potentia lly resulting in unintentional reuse of responses with sensitive information. Fo r this reason, care must be exercised.</t> <t>The ability to carry multiple caching policies on a response can result in confusion about how a response will be cached in different systems, potentia lly resulting in unintentional reuse of responses with sensitive information. Fo r this reason, care must be exercised.</t>
</section> </section>
</middle> </middle>
<back> <back>
<displayreference target="RFC8941" to="STRUCTURED-FIELDS"/>
<references> <references>
<name>References</name> <name>References</name>
<references> <references>
<name>Normative References</name> <name>Normative References</name>
<reference anchor="RFC2119">
<front>
<title>Key words for use in RFCs to Indicate Requirement Levels</tit
le>
<author fullname="S. Bradner" initials="S." surname="Bradner">
<organization/>
</author>
<date month="March" year="1997"/>
<abstract>
<t>In many standards track documents several words are used to sig
nify the requirements in the specification. These words are often capitalized.
This document defines these words as they should be interpreted in IETF document
s. This document specifies an Internet Best Current Practices for the Internet
Community, and requests discussion and suggestions for improvements.</t>
</abstract>
</front>
<seriesInfo name="BCP" value="14"/>
<seriesInfo name="RFC" value="2119"/>
<seriesInfo name="DOI" value="10.17487/RFC2119"/>
</reference>
<reference anchor="HTTP">
<front>
<title>HTTP Semantics</title>
<author fullname="Roy T. Fielding">
<organization>Adobe</organization>
</author>
<author fullname="Mark Nottingham">
<organization>Fastly</organization>
</author>
<author fullname="Julian Reschke">
<organization>greenbytes GmbH</organization>
</author>
<date day="12" month="September" year="2021"/>
<abstract>
<t> The Hypertext Transfer Protocol (HTTP) is a stateless applic
ation-
level protocol for distributed, collaborative, hypertext information
systems. This document describes the overall architecture of HTTP,
establishes common terminology, and defines aspects of the protocol
that are shared by all versions. In this definition are core
protocol elements, extensibility mechanisms, and the "http" and
"https" Uniform Resource Identifier (URI) schemes.
This document updates RFC 3864 and obsoletes RFC 2818, RFC 7231, RFC <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2119.
7232, RFC 7233, RFC 7235, RFC 7538, RFC 7615, RFC 7694, and portions xml"/>
of RFC 7230.
</t> <reference anchor='HTTP' target="https://www.rfc-editor.org/info/rfc9110">
</abstract> <front>
</front> <title>HTTP Semantics</title>
<seriesInfo name="Internet-Draft" value="draft-ietf-httpbis-semantics- <author initials='R' surname='Fielding' fullname='Roy Fielding' role="editor">
19"/> <organization />
</reference> </author>
<reference anchor="HTTP-CACHING"> <author initials='M' surname='Nottingham' fullname='Mark Nottingham' role="edito
<front> r">
<title>HTTP Caching</title> <organization />
<author fullname="Roy T. Fielding"> </author>
<organization>Adobe</organization> <author initials='J' surname='Reschke' fullname='Julian Reschke' role="editor">
</author> <organization />
<author fullname="Mark Nottingham"> </author>
<organization>Fastly</organization> <date year='2022' month='June' />
</author> </front>
<author fullname="Julian Reschke"> <seriesInfo name='STD' value='97'/>
<organization>greenbytes GmbH</organization> <seriesInfo name='RFC' value='9110'/>
</author> <seriesInfo name='DOI' value='10.17487/RFC9110'/>
<date day="12" month="September" year="2021"/> </reference>
<abstract>
<t> The Hypertext Transfer Protocol (HTTP) is a stateless applic
ation-
level protocol for distributed, collaborative, hypertext information
systems. This document defines HTTP caches and the associated header
fields that control cache behavior or indicate cacheable response
messages.
This document obsoletes RFC 7234. <reference anchor='HTTP-CACHING' target="https://www.rfc-editor.org/info/rfc9111
">
<front>
<title>HTTP Caching</title>
<author initials='R' surname='Fielding' fullname='Roy T. Fielding' role="editor"
>
<organization />
</author>
<author initials='M' surname='Nottingham' fullname='Mark Nottingham' role="edito
r">
<organization />
</author>
<author initials='J' surname='Reschke' fullname='Julian Reschke' role="editor">
<organization />
</author>
<date year='2022' month='June' />
</front>
<seriesInfo name='STD' value='98'/>
<seriesInfo name='RFC' value='9111'/>
<seriesInfo name='DOI' value='10.17487/RFC9111'/>
</reference>
</t> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8941.
</abstract> xml"/>
</front> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8174.
<seriesInfo name="Internet-Draft" value="draft-ietf-httpbis-cache-19"/ xml"/>
>
</reference> </references>
<reference anchor="STRUCTURED-FIELDS">
<front>
<title>Structured Field Values for HTTP</title>
<author fullname="M. Nottingham" initials="M." surname="Nottingham">
<organization/>
</author>
<author fullname="P-H. Kamp" initials="P-H." surname="Kamp">
<organization/>
</author>
<date month="February" year="2021"/>
<abstract>
<t>This document describes a set of data types and associated algo
rithms that are intended to make it easier and safer to define and handle HTTP h
eader and trailer fields, known as "Structured Fields", "Structured Headers", or
"Structured Trailers". It is intended for use by specifications of new HTTP fie
lds that wish to use a common syntax that is more restrictive than traditional H
TTP field values.</t>
</abstract>
</front>
<seriesInfo name="RFC" value="8941"/>
<seriesInfo name="DOI" value="10.17487/RFC8941"/>
</reference>
<reference anchor="RFC8174">
<front>
<title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</ti
tle>
<author fullname="B. Leiba" initials="B." surname="Leiba">
<organization/>
</author>
<date month="May" year="2017"/>
<abstract>
<t>RFC 2119 specifies common key words that may be used in protoco
l specifications. This document aims to reduce the ambiguity by clarifying tha
t only UPPERCASE usage of the key words have the defined special meanings.</t>
</abstract>
</front>
<seriesInfo name="BCP" value="14"/>
<seriesInfo name="RFC" value="8174"/>
<seriesInfo name="DOI" value="10.17487/RFC8174"/>
</reference>
</references>
<references> <references>
<name>Informative References</name> <name>Informative References</name>
<reference anchor="AGE-PENALTY" target="https://dl.acm.org/doi/10.5555/1 251440.1251447"> <reference anchor="AGE-PENALTY" target="https://dl.acm.org/doi/10.5555/1 251440.1251447">
<front> <front>
<title>The age penalty and its effect on cache performance</title> <title>The age penalty and its effect on cache performance</title>
<author initials="E." surname="Cohen" fullname="Edith Cohen"> <author initials="E." surname="Cohen" fullname="Edith Cohen">
<organization>AT&amp;T Labs - Research</organization> <organization>AT&amp;T Labs - Research</organization>
</author> </author>
<author initials="H." surname="Kaplan" fullname="Haim Kaplan"> <author initials="H." surname="Kaplan" fullname="Haim Kaplan">
<organization>School of Computer Science, Tel-Aviv University</org anization> <organization>School of Computer Science, Tel-Aviv University</org anization>
</author> </author>
<date year="2001" month="March"/> <date year="2001" month="March"/>
</front> </front>
</reference> </reference>
</references> </references>
</references> </references>
</back>
<!-- ##markdown-source:
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
bk0ZUZ9r6u+zU882CP4Xm4ttLhA1AAA=
</back>
</rfc> </rfc>
 End of changes. 32 change blocks. 
390 lines changed or deleted 201 lines changed or added

This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/