Кратко

  • Cache-Groups связывает ответы только в одном кеше, при одном URI-источнике и точном совпадении строки с учётом регистра.
  • Cache-Group-Invalidation допускает локальное действие после небезопасного запроса, но оно необязательно, не запускает каскад и не синхронизирует другие кеши.

После изменения каталога могут одновременно устареть карточка, список и агрегированный ответ. Их ключи кеша не совпадают. RFC 9875 позволяет источнику явно сообщить об их связи, не объявляя эти представления одним объектом.

Поле Cache-Groups — это List строк в формате Structured Fields. Для кеша строка непрозрачна: он сравнивает её, но не извлекает иерархию, бизнес-смысл или полномочие. Порядок несущественен, неизвестные параметры игнорируются. Реализация должна поддерживать не менее 32 групп в поле и не менее 32 символов в одном элементе при сохранении общих ограничений на размер HTTP-полей.

Членство возникает лишь при трёх условиях. Оба ответа хранятся в одном кеше, строки совпадают посимвольно с учётом регистра, а URI-источник один и тот же. Такое же имя у другого источника отношения не создаёт. То же имя во втором кеше общей памяти тоже не образует.

Cache-Group-Invalidation обрабатывается в ответе на запрос, способный изменить состояние, например POST, PUT или DELETE. В нём перечислены группы, которые принимающий кеш может инвалидировать. В ответе на безопасный метод вроде GET поле должно игнорироваться. Поэтому в квитанции нужны не только значение поля, но и метод с контекстом ответа.

Нормативное слово — MAY. Кеш вправе инвалидировать связанных членов, однако RFC 9875 не требует одинакового действия от каждого посредника. RFC 9213 позволяет адресовать управление определённым классам кешей и усилить правило. Такой профиль является отдельной конфигурацией, а не свойством имени группы.

Локальная инвалидизация не обязательно означает удаление. По RFC 9111 кеш может удалить сохранённые ответы или пометить их недействительными, потребовав обязательной проверки перед повторным использованием. Событие ещё не сообщает, остались ли байты, прошла ли следующая валидация и была ли получена новая версия.

Транзитивного распространения нет. Если A связан с B одной группой, а B с C другой, инвалидизация A не проходит через B к C. Групповое действие не порождает следующего группового действия. Важен фактический состав, который этот кеш держал в момент обработки.

Главное ограничение — топология. Механизм действует в одном кеше и для ответов одного источника. Он не синхронизирует иерархию или mesh и не объединяет разные источники. Один узел на границе может получить сигнал, тогда как по другому маршруту он никогда не проходил.

Поэтому доказательство состоит из отдельных записей: изменение на источнике; право выпускать поля; метод и ответ; получение каждым посредником; поддерживаемая версия; локальная политика; текущий состав группы; решение об инвалидизации; удаление либо отметка; последующая валидация или заполнение; прикладной canary на каждом существенном пути. Предыдущая запись не подтверждает следующую.

При совместном хостинге право на заголовок становится поверхностью безопасности. RFC предупреждает, что одна сторона может сгруппировать свои ресурсы с ресурсами другой стороны того же источника либо отправить сигнал с чужими побочными эффектами. Платформа должна ограничивать вставку и сохранение полей по арендатору и источнику.

Реестр имён HTTP-полей IANA содержит оба поля как постоянные Lists. Регистрация подтверждает общее имя и ссылку на спецификацию, но не поддержку, передачу, обработку или результат в действующей системе.

Источники