<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.4 (Ruby 3.2.2) -->
<?rfc tocindent="yes"?>
<?rfc strict="yes"?>
<?rfc compact="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-httpbis-cache-groups-01" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.19.0 -->
  <front>
    <title>HTTP Cache Groups</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-httpbis-cache-groups-01"/>
    <author initials="M." surname="Nottingham" fullname="Mark Nottingham">
      <organization/>
      <address>
        <postal>
          <postalLine>Prahran</postalLine>
          <postalLine>Australia</postalLine>
        </postal>
        <email>mnot@mnot.net</email>
        <uri>https://www.mnot.net/</uri>
      </address>
    </author>
    <date/>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 46?>

<t>This specification introduces a means of describing the relationships between stored responses in HTTP caches, "grouping" them by associating a stored response with one or more opaque strings.</t>
    </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-cache-groups/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        HTTP Working Group mailing list (<eref target="mailto:ietf-http-wg@w3.org"/>),
        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.org/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/httpwg/http-extensions/labels/cache-groups"/>.</t>
    </note>
  </front>
  <middle>
    <?line 50?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>HTTP caching <xref target="HTTP-CACHING"/> operates at the granularity of a single resource; the freshness of one stored response does not affect that of others. This granularity can make caching more efficient -- for example, when a page is composed of many assets that have different requirements for caching.</t>
      <t>However, there are also cases where the relationship between stored responses could be used to improve cache efficiency.</t>
      <t>For example, it's common for a set of closely-related resources to be deployed on a site, such as is the case for many JavaScript libraries and frameworks. These resources are typically deployed with long freshness lifetimes for caching. When that period passes, the cache will need to revalidate each stored response in a short period of time. Grouping these resources can be used to allow a cache to consider them all as being revalidated when any single response in the group is revalidated, removing the need to revalidate all of them individually and avoiding the associated overhead.</t>
      <t>Likewise, when some resources change, it implies that other resources may have also changed. This might be because a state-changing request has side effects on other resources, or it might be purely for administrative convenience (e.g., "invalidate this part of the site"). Grouping responses together provides a dedicated way to express these relationships, instead of relying on things like URL structure.</t>
      <t>In addition to sharing revalidation and invalidation events, the relationships indicated by grouping can also be used by caches to optimise their operation; for example, it could be used to inform the operation of cache eviction algorithms.</t>
      <t><xref target="cache-groups"/> introduces a means of describing the relationships between a set of stored responses in HTTP caches by associating them with one or more opaque strings. It also describes how caches can use that information to apply revalidation and invalidation events to members of a group.</t>
      <t><xref target="cache-group-invalidation"/> introduces one new source of such events: a HTTP response header that allows a state-changing response to trigger a group invalidation.</t>
      <t>These mechanisms operate within a single cache, across the stored responses associated with a single origin server. They do not address this issues of synchronising state between multiple caches (e.g., in a hierarchy or mesh), nor do they facilitate association of stored responses from disparate origins.</t>
      <section anchor="notational-conventions">
        <name>Notational Conventions</name>
        <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
        <?line -18?>

<t>This specification uses the following terminology from <xref target="STRUCTURED-FIELDS"/>: List, String, Parameter.</t>
      </section>
    </section>
    <section anchor="cache-groups">
      <name>The Cache-Groups Response Header Field</name>
      <t>The Cache-Groups HTTP Response Header is a List of Strings <xref target="STRUCTURED-FIELDS"/>. Each member of the list is an opaque value that identifies a group that the response belongs to.</t>
      <sourcecode type="http-message"><![CDATA[
HTTP/1.1 200 OK
Content-Type: application/javascript
Cache-Control: max-age=3600
Cache-Groups: "ExampleJS";revalidate, "scripts"
]]></sourcecode>
      <t>This specification defines one Parameter for Cache-Groups, "revalidate", that indicates that the resources associated with that group share revalidation; see <xref target="revalidation"/>.</t>
      <t>The ordering of members of Cache-Groups is not significant.</t>
      <section anchor="identify">
        <name>Identifying Grouped Responses</name>
        <t>Two responses stored in the same cache are considered to have the same group when all of the following conditions are met:</t>
        <ol spacing="normal" type="1"><li>
            <t>They both contain a Cache-Groups response header field that contains the same String (in any position in the List), when compared character-by-character.</t>
          </li>
          <li>
            <t>The both share the same URI origin (per <xref section="4.3.1" sectionFormat="of" target="HTTP"/>).</t>
          </li>
          <li>
            <t>If being considered for revalidation (<xref target="revalidation"/>), they both have the "revalidate" Parameter.</t>
          </li>
        </ol>
      </section>
      <section anchor="cache-behaviour">
        <name>Cache Behaviour</name>
        <section anchor="revalidation">
          <name>Revalidation</name>
          <t>A cache that successfully revalidates a stored response <bcp14>MAY</bcp14> consider any stored responses that share a group (per <xref target="identify"/>) as also being revalidated at the same time.</t>
          <t>Cache extensions can explicitly strengthen the requirement above. For example, a targeted cache control header field <xref target="TARGETED"/> might specify that caches processing it are required to revalidate such responses.</t>
        </section>
        <section anchor="invalidation">
          <name>Invalidation</name>
          <t>A cache that invalidates a stored response <bcp14>MAY</bcp14> invalidate any stored responses that share groups (per <xref target="identify"/>) with that response.</t>
          <t>Cache extensions can explicitly strengthen the requirement above. For example, a targeted cache control header field <xref target="TARGETED"/> might specify that caches processing it are required to invalidate such responses.</t>
        </section>
      </section>
    </section>
    <section anchor="cache-group-invalidation">
      <name>The Cache-Group-Invalidation Response Header Field</name>
      <t>The Cache-Group-Invalidation response header field is a List of Strings <xref target="STRUCTURED-FIELDS"/>. Each member of the list is an opaque value that identifies a group that the response invalidates, per <xref target="invalidation"/>.</t>
      <t>For example, a POST request that has side effects on two cache groups could indicate that stored responses associated with either or both of those groups should be invalidated with:</t>
      <sourcecode type="http-message"><![CDATA[
HTTP/1.1 200 OK
Content-Type: text/html
Cache-Group-Invalidation: "eurovision-results", "kylie-minogue"
]]></sourcecode>
      <t>The Cache-Group-Invalidation header field <bcp14>MUST</bcp14> be ignored on responses to requests that have a safe method (e.g., GET; see <xref section="9.2.1" sectionFormat="of" target="HTTP"/>).</t>
      <t>A cache that receives a Cache-Group-Invalidation header field on a response to an unsafe request <bcp14>MAY</bcp14> invalidate any stored responses that share groups (per <xref target="identify"/>) with any of the listed groups.</t>
      <t>Cache extensions can explicitly strengthen the requirement above. For example, a targeted cache control header field <xref target="TARGETED"/> might specify that caches processing it are required to respect the Cache-Group-Invalidation signal.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>IANA should perform the following tasks:</t>
      <section anchor="http-field-names">
        <name>HTTP Field Names</name>
        <t>Enter the following into the Hypertext Transfer Protocol (HTTP) Field Name Registry:</t>
        <ul spacing="normal">
          <li>
            <t>Field Name: Cache-Groups</t>
          </li>
          <li>
            <t>Status: permanent</t>
          </li>
          <li>
            <t>Reference: RFC nnnn</t>
          </li>
          <li>
            <t>Comments:</t>
          </li>
          <li>
            <t>Field Name: Cache-Group-Invalidation</t>
          </li>
          <li>
            <t>Status: permanent</t>
          </li>
          <li>
            <t>Reference: RFC nnnn</t>
          </li>
          <li>
            <t>Comments:</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>This mechanism allows resources that share an origin to invalidate each other. Because of this,
origins that represent multiple parties (sometimes referred to as "shared hosting") might allow
one party to group its resources with those of others, or to send signals which have side effects upon them -- either invalidating stored responses or extending their lifetime.</t>
      <t>Shared hosts that wish to mitigate these risks can control access to the header fields defined in this specification.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="HTTP">
          <front>
            <title>HTTP Semantics</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-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.</t>
              <t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="97"/>
          <seriesInfo name="RFC" value="9110"/>
          <seriesInfo name="DOI" value="10.17487/RFC9110"/>
        </reference>
        <reference anchor="HTTP-CACHING">
          <front>
            <title>HTTP Caching</title>
            <author fullname="R. Fielding" initials="R." role="editor" surname="Fielding"/>
            <author fullname="M. Nottingham" initials="M." role="editor" surname="Nottingham"/>
            <author fullname="J. Reschke" initials="J." role="editor" surname="Reschke"/>
            <date month="June" year="2022"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-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.</t>
              <t>This document obsoletes RFC 7234.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="98"/>
          <seriesInfo name="RFC" value="9111"/>
          <seriesInfo name="DOI" value="10.17487/RFC9111"/>
        </reference>
        <reference anchor="STRUCTURED-FIELDS">
          <front>
            <title>Structured Field Values for HTTP</title>
            <author fullname="Mark Nottingham" initials="M." surname="Nottingham">
              <organization>Cloudflare</organization>
            </author>
            <author fullname="Poul-Henning Kamp" initials="P." surname="Kamp">
              <organization>The Varnish Cache Project</organization>
            </author>
            <date day="6" month="November" year="2023"/>
            <abstract>
              <t>   This document describes a set of data types and associated algorithms
   that are intended to make it easier and safer to define and handle
   HTTP header and trailer fields, known as "Structured Fields",
   "Structured Headers", or "Structured Trailers".  It is intended for
   use by specifications of new HTTP fields that wish to use a common
   syntax that is more restrictive than traditional HTTP field values.

   This document obsoletes RFC 8941.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-httpbis-sfbis-04"/>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. 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="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that 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 anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="TARGETED">
          <front>
            <title>Targeted HTTP Cache Control</title>
            <author fullname="S. Ludin" initials="S." surname="Ludin"/>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <author fullname="Y. Wu" initials="Y." surname="Wu"/>
            <date month="June" year="2022"/>
            <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 caches. It also defines one such header field, the CDN-Cache-Control response header field, which is targeted at content delivery network (CDN) caches.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9213"/>
          <seriesInfo name="DOI" value="10.17487/RFC9213"/>
        </reference>
      </references>
    </references>
    <?line 185?>

<section anchor="acknowledgements">
      <name>Acknowledgements</name>
      <t>Thanks to Stephen Ludin for his review and suggestions.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA9VZ627kthX+r6dgx0C7Lkbjyy7a7GyaxLG9sVOv7fqCIAiC
gCNxNIwlUSEpz04N51n6LH2yfudQ0khjZze9AEUCZD2iyMNz/c5FcRxHXvtc
TcXJzc2lOJTJQomvrKkrF8nZzKr7aZSapJQFtqRWzn2slZ/HC++rmXZxQgfi
jA/Eu3tRKj02Phwd3Bw/RgkeMmNXU+F8GkW6slPhbe38/u7u69396E6tlsam
U3FaemVL5eMjuiGKnJdl+oPMTQliK+UiV0jrf/ipNl65qShNVOmp+M6bZCzw
jy5TVfqxcMZ6q+YOv1ZF88NbneBVYopKNj8KbMYrXea6VN9H0b0qazWNhGAx
gibw5FcVbv/G2DtdZkEnWF0Y0gSJ76Y7O/R3mU2MzXbwrpA6n4pOP/Ey+2L5
kl7inbTJYn0u1867SXi5c4BX+l65nct6lutkp0+AyFpVmfXRTPtFPZtAjuZ2
/hOr916VTpvS7eRypnK30zdNFE7F2rlaxbxhKgYbIln7hbFQQ4wrBbQDRb+b
iHPjPeRfyIKXgyO8k/Zu8w0kkaX+u/TgYcorlYEd8/BbiFhcWrmwsuTnxNSl
J884gDtYmWvJyyqosCiN/4L+mcAp+EVt9VoFy+Vy0r7diaLS2ALX3rMNyXhT
cfX28PXe3m7zHB8eHJ6cnn/Vru9h/frm6vbw5vbq+Ch+e3p8dnQNL4yPJgPn
dnP8C78t5/0bbg6uvjq+OT4K1Pb3XkYRHEr7Fb28Pj57OxUjvBEl/htFURzH
Qs5IyASefbPQTrhKJXquE9YVNO2tSetEOSFFoWTphJmLVLnE6hm5nkdIWpXz
brfQlRMz5ZdKlfBuY1WKl67CKxDQZYhjNi18fMTWBZERUSnEbCWkc4gYSabD
fRsUxBJ+IhB2MKco8EqYSv5UK46jMnOTIE+h0zRXURRtUegy98RcFHWXE/WH
h77yHx9BS1lAAuT0LFQGb6hzaaE7Ehnc4FhOwjpT20S94V1zPC5K5VgtxNom
z6kBSbiDkPO5Sog06NNenLZuIljn/bsSWSJW71THKUuq5jCJhikFJITFhXov
iypXY7FcQNdSVDJTAqQIS4wDB7ijkCWrVHkX7l3Ie3CkwYklUlb9VGurGHKY
aHMlFHlilupe2TEJiesl/Z87gx1kySUvbpr+ly2PgMpTvBY1ceaN0EVlzX2Q
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
918cGsn5hCAAAA==

-->

</rfc>
