Cache Control
Wenn queries gegen den GraphQL-Server über die GET-Methode ausgeführt werden, kann die GraphQL-Antwort clientseitig oder in Zwischenstufen zwischen Client und Server (z. B. einem CDN) zwischengespeichert werden, indem Standard-HTTP-Caching genutzt wird.
Dies funktioniert auf natürliche Weise für persisted queries, und für den Single Endpoint sowie benutzerdefinierte Endpoints funktioniert es, indem der Parameter ?query={ GraphQL query } an den Endpoint angehängt wird.
Beschreibung
HTTP-Caching funktioniert, indem ein Cache-Control-Header mit einem max-age-Wert in der Antwort gesendet wird, der angibt, wie lange die Antwort zwischengespeichert werden soll.
Die Cache Control-Erweiterung bietet Cache Control Lists, in denen benutzerdefinierte max-age-Werte für Felder und Direktiven definiert werden. Daher erzeugen verschiedene queries mit unterschiedlichen Kombinationen von Feldern und Direktiven einen unterschiedlichen max-age-Wert.
Der max-age-Wert der Antwort wird automatisch von der GraphQL-Engine berechnet. Sein Wert ist das niedrigste max-age aller Felder und Direktiven in der angeforderten query (wie in der Cache Control List definiert), oder no-store, wenn:
- eine Mutation ausgeführt wird
- ein Feld oder eine Direktive
max-agemit dem Wert0hat - eine Access Control-Regel den Benutzerstatus für ein Feld oder eine Direktive prüfen muss (in diesem Fall ist die Antwort benutzerspezifisch und kann daher nicht zwischengespeichert werden)

Cache Control Lists
Dem Seitenbereich wird ein neuer Custom Post Type „Cache Control List" hinzugefügt. Du kannst die Einträge auf der Seite „Cache Control Lists" im Menü durchsehen und auf „Add New Cache Control List" klicken, um einen neuen Eintrag im Editor anzulegen.


Jede Cache Control List enthält einen oder mehrere Einträge, die jeweils folgende Elemente aufweisen:
- Die Felder und Direktiven, bei deren Auftreten in der GraphQL-query das gewählte max-age wirksam wird
- Das max-age

Nachdem du die Cache Control List erstellt hast, kannst du den Endpoint dazu bringen, sie zu verwenden, indem du die entsprechende Schema Configuration bearbeitest und den Eintrag aus der Liste unter dem Block „Cache Control Lists" auswählst.
