Caching
CachingCache Control

Cache Control

Included in the “Power Extensions” bundle

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-age mit dem Wert 0 hat
  • 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)

Definition einer Cache Control Policy

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.

Cache Control Lists
Cache Control Lists

Cache Control List-Editor

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

Cache Control-Eintrag

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.

Auswahl einer Cache Control List in der Schema Configuration