HTTP-caching toevoegen
Wanneer queries worden uitgevoerd op de GraphQL-server via GET (in plaats van de meer traditionele POST-methode), kan de GraphQL-respons worden gecached aan de clientzijde of in tussenstappen tussen de client en de server (zoals een CDN), door gebruik te maken van standaard HTTP-caching.
Dit werkt van nature voor persisted queries, en voor het single endpoint en custom endpoints kan het werken door de parameter ?query={ GraphQL query } aan het endpoint toe te voegen.
De configuratie wordt gemaakt via een cache control list en aan het endpoint geleverd via de schemaconfiguratie.
Het endpoint uitvoeren via GET
Persisted queries zijn al geschikt om via GET uitgevoerd te worden, omdat ze de GraphQL-query op de server opslaan (d.w.z. die hoeft niet in de body van het verzoek te worden meegegeven).
Voor het single endpoint en custom endpoints moet de query echter worden opgegeven onder de parameter ?query=... die aan de endpoint-URL is toegevoegd.
Bijvoorbeeld de volgende GraphQL-query:
{
posts {
id
title
url
author {
id
name
url
}
}
}...kan via GET op het single endpoint als volgt worden uitgevoerd:
https://mysite.com/graphql/?query={ posts { id title url author { id name url } } }
Automatische berekening van max-age
De max-age-waarde van de respons wordt automatisch berekend op basis van de access control lists die aan het endpoint zijn toegewezen (via de schemaconfiguratie).
Deze waarde is de laagste max-age-waarde van alle velden en directives in de gevraagde query, of no-store als:
- er een mutatie wordt uitgevoerd
- een veld of directive een
max-ageheeft met waarde0 - een toegangsbeheerregel de gebruikersstatus moet controleren voor een veld of directive (in dat geval is de respons specifiek voor de gebruiker en kan deze niet worden gecached)
Standaard max-age
Velden waaraan geen specifieke max-age is toegewezen, gebruiken de standaardwaarde die is gedefinieerd in de schemaconfiguratie:

Als dit niet is ingesteld, wordt de standaard max-age-waarde gebruikt die is gedefinieerd op de instellingenpagina, onder het tabblad "Cache Control". Deze waarde, namelijk 86400 seconden, kan worden gewijzigd in de instellingen.
Voorbeeld
Stel dat we de volgende configuratie van max-age-waarden hebben voor velden van het type User:
name=>600url=>30
Dan heeft de respons op deze query de max-age-waarde ingesteld op 86400 (omdat noch displayName noch email zijn geconfigureerd, zodat ze de standaardwaarde gebruiken):
query {
users {
displayName
email
}
}De respons op deze query heeft de max-age-waarde ingesteld op 30 (overeenkomstig url, de laagste waarde van alle geconfigureerde velden):
query {
user(by: {id: 1}) {
name
url
}
}De respons op deze query heeft de max-age-waarde ingesteld op no-store (omdat veld me de gebruikersstatus vereist):
query {
me {
name
url
}
}De respons op deze query heeft de max-age-waarde ingesteld op no-store (omdat er een mutatie wordt uitgevoerd):
mutation {
createPost {
id
}
}Alle cache control lists bekijken
Door op "Cache Control Lists" in het menu van de plugin te klikken, wordt de lijst van alle gemaakte cache control lists weergegeven:

Een nieuwe cache control list aanmaken
Klik op de knop "Add New Cache Control List" om de WordPress-editor te openen:

Geef de cache control list een titel, voeg vermeldingen toe met velden en directives, en configureer de max-age-waarde voor elk ervan:

Klik als je klaar bent op de knop Publish. De nieuwe cache control list wordt dan beschikbaar voor de schemaconfiguratie.
Cache Control-vermeldingen
Elke cache control list bevat één of meerdere vermeldingen, elk met de volgende elementen:
- De velden waarvoor caching wordt geconfigureerd
- De directives waarvoor caching wordt geconfigureerd
- De
max-age-waarde voor elk ervan

Velden selecteren uit interfaces
Naast velden uit typen kunnen we ook velden uit interfaces selecteren. In dat geval wordt de max-age-waarde toegepast wanneer die velden worden opgevraagd vanuit een type dat de interface implementeert.

De cache control list beschrijven
Gebruik het veld "Excerpt" in het paneel Documentinstellingen om een beschrijving toe te voegen aan de cache control list.
Meer informatie vind je in de gids Een beschrijving toevoegen aan de API.
De cache control list gebruiken
Nadat je de cache control list hebt aangemaakt, kun je het Custom Endpoint of de Persisted Query er gebruik van laten maken door de bijbehorende schemaconfiguratie te bewerken en de ACL te selecteren uit de lijst onder het blok "Cache Control Lists".

Als de configuratie niet is aangepast, worden de standaard cache control lists gebruikt die zijn gedefinieerd op de instellingenpagina, onder het tabblad "Cache Control":
