Кратко

  • Cache-Groups позволяет ответу объявить одну или несколько непрозрачных строк, чувствительных к регистру.
  • Членство в группе существует только внутри одного кэша и одного URI-источника.
  • Cache-Group-Invalidation в ответе на безопасный запрос нужно игнорировать; в ответе на небезопасный запрос оно может инвалидировать сохранённые ответы с указанными общими группами.
  • Инвалидация необязательна, если только другая расширяющая спецификация не сделает её сильнее, и не распространяется каскадно на вновь связанные группы.

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

Граница кэша ограничивает результат. Группа, известная одному кэшу, не становится общей для другого кэша. У браузера, прокси и обратного прокси могут быть разные сохранённые состояния. Механизм также не связывает ответы разных URI-источников. Называть его синхронизацией между кэшами, CDN или источниками нельзя. Локальная обработка сигнала не доказывает, что остальные участники цепочки видят то же состояние.

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

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

Практическое решение состоит в ограничении области: какой именно кэш и источник участвуют, кто объявляет членство и кто имеет право на инвалидацию. Если требуется согласованность нескольких кэшей, её нельзя приписывать RFC 9875; потребуется отдельный механизм. В документации следует различать ожидаемое локальное поведение, необязательность инвалидации и обязательное игнорирование поля для безопасного запроса.

Источники