HTTP-Caching hinzufügen
Wenn queries gegen den GraphQL-Server per GET (statt der üblicheren POST-Methode) ausgeführt werden, kann die GraphQL-Antwort clientseitig oder auf Zwischenstufen zwischen Client und Server (wie einem CDN) zwischengespeichert werden, indem auf Standard-HTTP-Caching zurückgegriffen wird.
Das funktioniert bei persisted queries von Haus aus, und für den single endpoint und custom endpoints kann es funktionieren, indem der Parameter ?query={ GraphQL query } an den Endpoint angehängt wird.
Die Konfiguration wird über eine Cache-Control-Liste erstellt und dem Endpoint über die Schema-Konfiguration bereitgestellt.
Den Endpoint per GET ausführen
Persisted queries eignen sich bereits für die Ausführung per GET, da sie die GraphQL-Query im Server speichern (d. h. sie muss nicht im Body der Anfrage angegeben werden).
Für den single endpoint und custom endpoints hingegen muss die Query im Parameter ?query=... angegeben werden, der an die Endpoint-URL angehängt wird.
Zum Beispiel kann die folgende GraphQL-Query:
{
posts {
id
title
url
author {
id
name
url
}
}
}...per GET gegen den single endpoint so ausgeführt werden:
https://mysite.com/graphql/?query={ posts { id title url author { id name url } } }
Automatische max-age-Berechnung
Der max-age-Wert der Antwort wird automatisch aus den dem Endpoint zugewiesenen Access-Control-Listen berechnet (über die Schema-Konfiguration).
Dieser Wert ist der niedrigste max-age-Wert aus allen Feldern und Direktiven in der angeforderten Query, 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)
Standard-max-age
Felder, denen kein spezifischer max-age-Wert zugewiesen wurde, verwenden den Standardwert, der in der Schema-Konfiguration definiert ist:

Wenn nicht festgelegt, wird der auf der Einstellungsseite unter dem Tab „Cache Control" definierte Standard-max-age-Wert verwendet. Dieser Wert, der 86400 Sekunden beträgt, kann in den Einstellungen geändert werden.
Beispiel
Angenommen, wir haben die folgende Konfiguration von max-age-Werten für Felder des Typs User:
name=>600url=>30
Dann hat die Antwort auf diese Query den max-age-Wert 86400 (weil weder displayName noch email konfiguriert wurden und daher den Standardwert verwenden):
query {
users {
displayName
email
}
}Die Antwort auf diese Query hat den max-age-Wert 30 (entspricht url, dem niedrigsten Wert unter allen konfigurierten Feldern):
query {
user(by: {id: 1}) {
name
url
}
}Die Antwort auf diese Query hat den max-age-Wert no-store (weil das Feld me den Benutzerstatus benötigt):
query {
me {
name
url
}
}Die Antwort auf diese Query hat den max-age-Wert no-store (weil sie eine Mutation ausführt):
mutation {
createPost {
id
}
}Alle Cache-Control-Listen anzeigen
Ein Klick auf „Cache Control Lists" im Menü des Plugins zeigt die Liste aller erstellten Cache-Control-Listen an:

Eine neue Cache-Control-Liste erstellen
Klicke auf die Schaltfläche „Add New Cache Control List", um den WordPress-Editor zu öffnen:

Gib der Cache-Control-Liste einen Titel, füge Einträge mit Feldern und Direktiven hinzu und konfiguriere den max-age-Wert für sie:

Wenn alles bereit ist, klicke auf die Schaltfläche Publish. Die neue Cache-Control-Liste steht dann für die Schema-Konfiguration zur Verfügung.
Cache-Control-Einträge
Jede Cache-Control-Liste enthält einen oder mehrere Einträge, die jeweils folgende Elemente aufweisen:
- Die Felder, für die das Caching konfiguriert werden soll
- Die Direktiven, für die das Caching konfiguriert werden soll
- Den
max-age-Wert für sie

Felder aus Interfaces auswählen
Neben Feldern aus Typen können auch Felder aus Interfaces ausgewählt werden. In diesem Fall wird der max-age-Wert angewendet, wenn diese Felder von einem beliebigen Typ abgefragt werden, der das Interface implementiert.

Die Cache-Control-Liste beschreiben
Verwende das Feld „Excerpt" im Einstellungspanel des Dokuments, um der Cache-Control-Liste eine Beschreibung zu geben.
Weitere Informationen findest du in der Anleitung Eine Beschreibung zur API hinzufügen.
Die Cache-Control-Liste verwenden
Nachdem die Cache-Control-Liste erstellt wurde, kannst du den Custom Endpoint oder die Persisted Query dazu bringen, sie zu verwenden, indem du die entsprechende Schema-Konfiguration bearbeitest und die ACL aus der Liste im Block „Cache Control Lists" auswählst.

Wenn die Konfiguration nicht angepasst wird, werden die Standard-Cache-Control-Listen verwendet, die auf der Einstellungsseite unter dem Tab „Cache Control" definiert sind:
