Ajouter la mise en cache HTTP
Lorsque les requêtes sont exécutées contre le serveur GraphQL en utilisant GET (au lieu de la méthode plus traditionnelle POST), la réponse GraphQL peut être mise en cache côté client ou dans des étapes intermédiaires entre le client et le serveur (telles qu'un CDN), en s'appuyant sur la mise en cache HTTP standard.
Cela fonctionne naturellement pour les persisted queries, et pour le single endpoint et les custom endpoints, cela peut fonctionner en ajoutant le paramètre ?query={ GraphQL query } à l'endpoint.
La configuration est créée via une liste de contrôle de cache, et fournie à l'endpoint via la configuration du schéma.
Exécuter l'endpoint via GET
Les persisted queries sont déjà adaptées pour être exécutées via GET, car elles stockent la requête GraphQL sur le serveur (c'est-à-dire qu'elle ne doit pas être fournie dans le corps de la requête).
Pour le single endpoint et les custom endpoints, en revanche, la requête doit être fournie sous le paramètre ?query=... attaché à l'URL de l'endpoint.
Par exemple, la requête GraphQL suivante :
{
posts {
id
title
url
author {
id
name
url
}
}
}...peut être exécutée via GET contre le single endpoint comme ceci :
https://mysite.com/graphql/?query={ posts { id title url author { id name url } } }
Calcul automatique du max-age
La valeur max-age de la réponse est automatiquement calculée à partir des listes de contrôle d'accès assignées à l'endpoint (via la configuration du schéma).
Cette valeur est la valeur max-age la plus faible parmi tous les champs et directives dans la requête demandée, ou no-store si :
- une mutation est exécutée
- un champ ou une directive a
max-ageavec la valeur0 - une règle de contrôle d'accès doit vérifier l'état de l'utilisateur pour un champ ou une directive (dans ce cas, la réponse est spécifique à l'utilisateur, elle ne peut donc pas être mise en cache)
Max-age par défaut
Les champs auxquels aucun max-age spécifique n'est attribué utiliseront la valeur par défaut, définie dans la Configuration du Schéma :

Si elle n'est pas définie, la valeur max-age par défaut définie dans la page des Réglages, sous l'onglet "Cache Control", sera utilisée. Cette valeur, qui est de 86400 secondes, peut être modifiée dans les Réglages.
Exemple
Supposons que nous ayons la configuration suivante de valeurs max-age pour les champs du type User :
name=>600url=>30
Alors, la réponse à cette requête aura la valeur max-age définie à 86400 (parce que ni displayName ni email n'ont été configurés, ils utilisent donc la valeur par défaut) :
query {
users {
displayName
email
}
}La réponse à cette requête aura la valeur max-age définie à 30 (correspondant à url, qui est la valeur la plus faible parmi tous les champs configurés) :
query {
user(by: {id: 1}) {
name
url
}
}La réponse à cette requête aura la valeur max-age définie à no-store (parce que le champ me requiert l'état de l'utilisateur) :
query {
me {
name
url
}
}La réponse à cette requête aura la valeur max-age définie à no-store (parce qu'elle exécute une mutation) :
mutation {
createPost {
id
}
}Accéder à toutes les listes de contrôle de cache
En cliquant sur "Cache Control Lists" dans le menu du plugin, la liste de toutes les listes de contrôle de cache créées s'affiche :

Créer une nouvelle liste de contrôle de cache
Cliquez sur le bouton "Add New Cache Control List" pour ouvrir l'éditeur WordPress :

Donnez un titre à la liste de contrôle de cache, ajoutez des entrées avec des champs et des directives, et configurez la valeur max-age pour chacune :

Lorsqu'elle est prête, cliquez sur le bouton Publish. Ensuite, la nouvelle liste de contrôle de cache devient disponible pour la configuration du schéma.
Entrées de Cache Control
Chaque liste de contrôle de cache contient une ou plusieurs entrées, chacune avec les éléments suivants :
- Les champs pour lesquels configurer la mise en cache
- Les directives pour lesquelles configurer la mise en cache
- La valeur
max-agepour chacun

Sélectionner des champs depuis des interfaces
En plus des champs issus des types, nous pouvons également sélectionner des champs issus des interfaces. Dans ce cas, la valeur max-age est appliquée lors de l'interrogation de ces champs depuis n'importe quel type implémentant l'interface.

Décrire la liste de contrôle de cache
Utilisez le champ "Excerpt", dans le panneau des réglages du document, pour donner une description à la liste de contrôle de cache.
Pour plus d'informations, consultez le guide Ajouter une description à l'API.
Utiliser la liste de contrôle de cache
Après avoir créé la liste de contrôle de cache, nous pouvons faire en sorte que le Custom Endpoint ou la Persisted Query l'utilise en modifiant la Configuration du Schéma correspondante, et en sélectionnant l'ACL depuis la liste sous le bloc "Cache Control Lists".

Si la configuration n'est pas personnalisée, les listes de contrôle de cache par défaut définies sur la page des Réglages, sous l'onglet "Cache Control", seront utilisées :
