Résumé

  • Cache-Groups établit une relation opaque, exacte et limitée aux réponses de même origine stockées dans un seul cache.
  • Cache-Group-Invalidation peut déclencher une décision locale, mais l’action reste facultative, ne se propage pas et ne synchronise aucun autre cache.

Le mot « groupe » donne facilement l’illusion d’un objet partagé. Dans RFC 9875, il désigne quelque chose de beaucoup plus précis : une relation que chaque cache construit à partir des réponses qu’il a lui-même stockées. Cette modestie est la force du mécanisme, à condition de ne pas lui attribuer une portée qu’il refuse explicitement.

L’en-tête Cache-Groups contient une liste de chaînes selon la syntaxe des Structured Fields. Pour le cache, ces chaînes sont opaques. Il les compare caractère par caractère, en respectant la casse, sans déduire une hiérarchie ni un sens métier. Leur ordre ne compte pas et les paramètres inconnus sont ignorés. Une implémentation doit accepter au moins 32 groupes, avec au moins 32 caractères par valeur, sous réserve des limites générales de taille des champs HTTP.

Deux réponses n’appartiennent au même groupe que si elles sont présentes dans le même cache, portent la même chaîne exacte et relèvent de la même origine URI. Une étiquette identique chez une autre origine ne crée donc aucun lien. La même étiquette conservée dans un second cache ne crée pas davantage un registre commun.

L’en-tête Cache-Group-Invalidation intervient sur la réponse à une requête non sûre, par exemple POST, PUT ou DELETE. Il énumère les groupes que le cache destinataire peut invalider. Sur la réponse à une méthode sûre telle que GET, le champ doit être ignoré. Le standard sépare ainsi l’acte susceptible de modifier l’état d’une simple lecture.

La norme emploie toutefois MAY. Le cache peut invalider les membres liés ; il n’est pas tenu d’exécuter partout une purge uniforme. RFC 9213 offre un mécanisme de contrôle ciblé susceptible de renforcer la consigne pour une catégorie définie de caches. Ce renforcement doit être configuré et prouvé : le nom du groupe ne le contient pas.

« Invalider » n’équivaut pas toujours à supprimer les octets. RFC 9111 autorise soit la suppression des réponses stockées, soit leur marquage comme invalides, avec validation obligatoire avant une réutilisation. Une trace d’invalidation ne dit donc pas encore si le cache a effacé, revalidé, remplacé ou échoué lors de la requête suivante.

La propagation transitive est également exclue. Si A partage un groupe avec B, puis B un autre groupe avec C, l’invalidation de A par le premier groupe ne traverse pas automatiquement B pour atteindre C. Il faut connaître l’inventaire exact détenu par le cache au moment de la décision.

La frontière majeure est topologique. RFC 9875 précise que le mécanisme fonctionne dans un cache unique et pour une origine unique. Il ne traite ni la synchronisation d’une hiérarchie ou d’un maillage, ni l’association de réponses d’origines différentes. Un signal passé par un point de présence ne prouve rien sur une autre route qui ne l’a jamais reçu.

Une preuve exploitable doit donc relier plusieurs reçus : modification à l’origine ; droit d’émettre les champs ; méthode et réponse concernées ; réception par chaque intermédiaire ; support de RFC 9875 ; politique locale ; inventaire du groupe ; décision prise ; suppression ou marquage ; validation ou remplissage ultérieur ; canari applicatif sur chaque chemin utile. Aucun reçu ne remplace le suivant.

Le cas de l’hébergement partagé rend la gouvernance indispensable. Le RFC avertit qu’une partie pourrait associer ses ressources à celles d’une autre partie partageant l’origine, ou émettre un signal ayant des effets sur elles. L’injection de ces champs doit donc être autorisée dans le périmètre de l’origine et du locataire, pas seulement permise par une configuration HTTP générale.

Le registre IANA des champs HTTP donne aux deux noms un statut permanent et le type List. Cette inscription garantit une référence commune ; elle ne prouve ni prise en charge, ni conservation, ni traitement, ni convergence en production.

Sources