Caching
CachingCache Control

Cache Control

Included in the “Power Extensions” bundle

Podczas wykonywania queries na serwerze GraphQL metodą GET, odpowiedź GraphQL może być buforowana po stronie klienta lub na pośrednich etapach między klientem a serwerem (takich jak CDN), z wykorzystaniem standardowego buforowania HTTP.

Działa to naturalnie w przypadku utrwalonych queries, a dla pojedynczego endpointu i niestandardowych endpointów działa poprzez dodanie parametru ?query={ GraphQL query } do endpointu.

Opis

Buforowanie HTTP działa poprzez wysłanie nagłówka Cache-Control z wartością max-age w odpowiedzi, wskazując jak długo odpowiedź powinna być buforowana.

Rozszerzenie Cache Control oferuje Listy Cache Control, w których niestandardowe wartości max-age są definiowane dla pól i dyrektyw. Dlatego różne queries zawierające różne kombinacje pól i dyrektyw będą generować różną wartość max-age.

Wartość max-age odpowiedzi jest obliczana automatycznie przez silnik GraphQL. Jej wartość to najniższe max-age spośród wszystkich pól i dyrektyw w żądanym query (zgodnie z definicją na Liście Cache Control) lub no-store, jeśli:

  • wykonywana jest jakakolwiek mutacja
  • jakiekolwiek pole lub dyrektywa ma max-age o wartości 0
  • reguła Kontroli Dostępu musi sprawdzić stan użytkownika dla dowolnego pola lub dyrektywy (w takim przypadku odpowiedź jest specyficzna dla użytkownika i nie może być buforowana)

Definiowanie polityki cache control

Listy Cache Control

Do witryny dodawany jest nowy Custom Post Type „Lista Cache Control". Możemy przeglądać jego wpisy na stronie „Listy Cache Control" w menu i kliknąć „Dodaj Nową Listę Cache Control", aby dodać nowy wpis w edytorze.

Listy Cache Control
Listy Cache Control

Edytor Listy Cache Control

Każda Lista Cache Control zawiera jeden lub więcej wpisów, każdy z następującymi elementami:

  • Pola i dyrektywy, które jeśli pojawią się w query GraphQL, powodują zastosowanie wybranego max-age
  • Wartość max-age

Wpis Cache Control

Po utworzeniu Listy Cache Control możemy sprawić, aby endpoint z niej korzystał, edytując odpowiednią Konfigurację Schematu i wybierając element z listy w bloku „Listy Cache Control".

Wybieranie Listy Cache Control w Konfiguracji Schematu