Dodawanie cache HTTP
Gdy queries są wykonywane na serwerze GraphQL przy użyciu GET (zamiast bardziej tradycyjnej metody POST), odpowiedź GraphQL może być buforowana po stronie klienta lub w pośrednich etapach między klientem a serwerem (np. w CDN), z wykorzystaniem standardowego cache HTTP.
Działa to naturalnie dla persisted queries, a dla single endpoint i custom endpoints można to osiągnąć przez dołączenie parametru ?query={ GraphQL query } do endpointu.
Konfiguracja jest tworzona za pomocą listy kontroli cache i dostarczana do endpointu poprzez konfigurację schematu.
Wykonywanie endpointu przez GET
Persisted queries są już przystosowane do wykonywania przez GET, ponieważ przechowują query GraphQL na serwerze (tzn. nie musi być ona podana w treści żądania).
Dla single endpoint i custom endpoints natomiast, query musi być podana w parametrze ?query=... dołączonym do adresu URL endpointu.
Na przykład następująca query GraphQL:
{
posts {
id
title
url
author {
id
name
url
}
}
}...może być wykonana przez GET na single endpoint w następujący sposób:
https://mysite.com/graphql/?query={ posts { id title url author { id name url } } }
Automatyczne obliczanie max-age
Wartość max-age odpowiedzi jest obliczana automatycznie na podstawie list kontroli dostępu przypisanych do endpointu (poprzez konfigurację schematu).
Wartość ta jest najniższą wartością max-age spośród wszystkich pól i dyrektyw w żądanej query, lub no-store jeśli:
- wykonywana jest jakakolwiek mutacja
- jakiekolwiek pole lub dyrektywa ma
max-agez wartością0 - reguła kontroli dostępu musi sprawdzić stan użytkownika dla jakiegoś pola lub dyrektywy (w takim przypadku odpowiedź jest specyficzna dla użytkownika i nie może być buforowana)
Domyślny max-age
Pola, którym nie przypisano żadnej konkretnej wartości max-age, będą używać wartości domyślnej zdefiniowanej w konfiguracji schematu:

Jeśli nie jest ustawiona, zostanie użyta domyślna wartość max-age zdefiniowana na stronie Ustawień, w zakładce "Cache Control". Ta wartość, wynosząca 86400 sekund, może być zmodyfikowana w Ustawieniach.
Przykład
Załóżmy, że mamy następującą konfigurację wartości max-age dla pól typu User:
name=>600url=>30
Wtedy odpowiedź na tę query będzie miała wartość max-age ustawioną na 86400 (ponieważ ani displayName, ani email nie zostały skonfigurowane, więc używają wartości domyślnej):
query {
users {
displayName
email
}
}Odpowiedź na tę query będzie miała wartość max-age ustawioną na 30 (odpowiadającą url, które jest najniższą wartością spośród wszystkich skonfigurowanych pól):
query {
user(by: {id: 1}) {
name
url
}
}Odpowiedź na tę query będzie miała wartość max-age ustawioną na no-store (ponieważ pole me wymaga stanu użytkownika):
query {
me {
name
url
}
}Odpowiedź na tę query będzie miała wartość max-age ustawioną na no-store (ponieważ wykonuje mutację):
mutation {
createPost {
id
}
}Dostęp do wszystkich list kontroli cache
Po kliknięciu na "Cache Control Lists" w menu pluginu wyświetlana jest lista wszystkich utworzonych list kontroli cache:

Tworzenie nowej listy kontroli cache
Kliknij przycisk "Add New Cache Control List", aby otworzyć edytor WordPress:

Nadaj tytuł liście kontroli cache, dodaj wpisy z polami i dyrektywami oraz skonfiguruj wartość max-age dla każdego z nich:

Gdy wszystko będzie gotowe, kliknij przycisk Publish. Nowa lista kontroli cache stanie się wtedy dostępna dla konfiguracji schematu.
Wpisy Cache Control
Każda lista kontroli cache zawiera jeden lub wiele wpisów, z których każdy składa się z następujących elementów:
- Pola, dla których konfiguruje się buforowanie
- Dyrektywy, dla których konfiguruje się buforowanie
- Wartość
max-agedla każdego z nich

Wybieranie pól z interfejsów
Oprócz pól z typów możemy również wybierać pola z interfejsów. W takim przypadku wartość max-age jest stosowana przy zapytaniu o te pola z dowolnego typu implementującego dany interfejs.

Opisywanie listy kontroli cache
Użyj pola "Excerpt" w panelu ustawień dokumentu, aby dodać opis do listy kontroli cache.
Więcej informacji znajdziesz w przewodniku Dodawanie opisu do API.
Korzystanie z listy kontroli cache
Po utworzeniu listy kontroli cache możemy sprawić, aby Custom Endpoint lub Persisted Query z niej korzystały, edytując odpowiednią konfigurację schematu i wybierając ACL z listy w bloku "Cache Control Lists".

Jeśli konfiguracja nie zostanie dostosowana, zostaną użyte domyślne listy kontroli cache zdefiniowane na stronie Ustawień, w zakładce "Cache Control":
