Cache Control
Bij het uitvoeren van queries op de GraphQL-server via de GET-methode kan de GraphQL-respons worden gecached aan de clientkant of op tussenliggende stadia tussen client en server (zoals een CDN), door gebruik te maken van standaard HTTP-caching.
Dit werkt van nature voor persisted queries, en voor het enkele endpoint en aangepaste endpoints werkt het door de parameter ?query={ GraphQL query } aan het endpoint toe te voegen.
Beschrijving
HTTP-caching werkt door een Cache-Control-header met een max-age-waarde mee te sturen in de respons, die aangeeft hoe lang de respons gecached moet worden.
De Cache Control-extensie biedt Cache Control Lists, waarin aangepaste max-age-waarden worden gedefinieerd voor velden en directives. Verschillende queries met verschillende combinaties van velden en directives produceren daardoor een andere max-age-waarde.
De max-age-waarde van de respons wordt automatisch berekend door de GraphQL-engine. De waarde is de laagste max-age van alle velden en directives in de gevraagde query (zoals gedefinieerd in de Cache Control List), of no-store als:
- er een mutatie wordt uitgevoerd
- een veld of directive een
max-ageheeft met de waarde0 - een Access Control-regel 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)

Cache Control Lists
Er wordt een nieuw Custom Post Type "Cache Control List" aan de site toegevoegd. Je kunt de vermeldingen bekijken op de pagina "Cache Control Lists" in het menu en klikken op "Add New Cache Control List" om een nieuw item toe te voegen in de editor.


Elke Cache Control List bevat één of meerdere vermeldingen, elk met de volgende elementen:
- De velden en directives die, als ze in de GraphQL-query voorkomen, de geselecteerde max-age activeren
- De max-age

Na het aanmaken van de Cache Control List kun je het endpoint deze laten gebruiken door de bijbehorende Schema Configuration te bewerken en het item te selecteren uit de lijst onder het blok "Cache Control Lists".
