Caching
CachingCache Control

Cache Control

Included in the “Power Extensions” bundle

Lors de l'exécution de requêtes contre le serveur GraphQL via la méthode GET, la réponse GraphQL peut être mise en cache côté client ou dans les étapes intermédiaires entre le client et le serveur (comme un CDN), en s'appuyant sur la mise en cache HTTP standard.

Cela fonctionne naturellement pour les persisted queries, et pour l'endpoint unique et les endpoints personnalisés cela fonctionne en ajoutant le paramètre ?query={ GraphQL query } à l'endpoint.

Description

La mise en cache HTTP fonctionne en envoyant un en-tête Cache-Control avec une valeur max-age dans la réponse, indiquant pendant combien de temps la réponse doit être mise en cache.

L'extension Cache Control propose des Listes de Cache Control, où des valeurs personnalisées de max-age sont définies pour les champs et les directives. Ainsi, des requêtes différentes contenant différentes combinaisons de champs et de directives produiront une valeur max-age différente.

La valeur max-age de la réponse est calculée automatiquement par le moteur GraphQL. Sa valeur est le max-age le plus bas parmi tous les champs et directives de la requête demandée (telle que définie dans la Liste de Cache Control), ou no-store si :

  • une mutation est exécutée
  • un champ ou une directive a max-age avec la valeur 0
  • une règle de Contrôle d'Accès doit vérifier l'état de l'utilisateur pour un champ ou une directive (auquel cas, la réponse est spécifique à l'utilisateur, donc elle ne peut pas être mise en cache)

Définition d'une politique de cache control

Listes de Cache Control

Un nouveau Custom Post Type « Liste de Cache Control » est ajouté au site. Nous pouvons parcourir ses entrées sur la page « Listes de Cache Control » dans le menu, et cliquer sur « Ajouter une Nouvelle Liste de Cache Control » pour ajouter une nouvelle entrée dans l'éditeur.

Listes de Cache Control
Listes de Cache Control

Éditeur de Liste de Cache Control

Chaque Liste de Cache Control contient une ou plusieurs entrées, chacune avec les éléments suivants :

  • Les champs et directives qui, s'ils apparaissent dans la requête GraphQL, font entrer en vigueur le max-age sélectionné
  • Le max-age

Entrée de Cache Control

Après avoir créé la Liste de Cache Control, nous pouvons faire en sorte que l'endpoint l'utilise en modifiant la Configuration du Schéma correspondante, et en sélectionnant l'élément de la liste sous le bloc « Listes de Cache Control ».

Sélection d'une Liste de Cache Control dans la Configuration du Schéma