Aller au contenu principal

2. Aperçu du fonctionnement du cache

Un fonctionnement correct du cache préserve la sémantique des transferts HTTP ([RFC7231]) tout en éliminant le transfert des informations déjà détenues dans le cache. Bien que la mise en cache soit une fonctionnalité entièrement OPTIONAL de HTTP, on peut supposer que la réutilisation d'une réponse mise en cache est souhaitable et que cette réutilisation est le comportement par défaut en l'absence de toute exigence ou configuration locale l'empêchant. Par conséquent, les exigences relatives au cache HTTP visent à empêcher un cache soit de stocker une réponse non réutilisable, soit de réutiliser de manière inappropriée une réponse stockée, plutôt qu'à imposer aux caches de toujours stocker et réutiliser des réponses particulières.

Chaque entrée de cache se compose d'une clé de cache et d'une ou plusieurs réponses HTTP correspondant à des requêtes antérieures ayant utilisé la même clé. La forme la plus courante d'entrée de cache est le résultat réussi d'une requête de récupération : c'est-à-dire une réponse 200 (OK) à une requête GET, qui contient une représentation de la ressource identifiée par la cible de la requête (Section 4.3.1 du [RFC7231]). Il est toutefois également possible de mettre en cache des redirections permanentes, des résultats négatifs (par exemple 404 (Not Found)), des résultats incomplets (par exemple 206 (Partial Content)) et des réponses à des méthodes autres que GET, si la définition de la méthode autorise une telle mise en cache et définit un élément utilisable comme clé de cache.

La clé de cache primaire se compose de la méthode de requête et de l'URI cible. Toutefois, comme les caches HTTP couramment utilisés aujourd'hui se limitent généralement à la mise en cache des réponses à GET, de nombreux caches refusent simplement les autres méthodes et n'utilisent que l'URI comme clé de cache primaire.

Si une cible de requête est soumise à la négociation de contenu, son entrée de cache peut se composer de plusieurs réponses stockées, chacune se distinguant par une clé secondaire portant sur les valeurs des champs d'en-tête de sélection de la requête d'origine (Section 4.1).