Caching
CachingCache Control

Cache Control

Included in the “Power Extensions” bundle

Quando si eseguono query contro il server GraphQL tramite il metodo GET, la risposta GraphQL può essere memorizzata nella cache lato client o nelle fasi intermedie tra client e server (come una CDN), basandosi sulla cache HTTP standard.

Questo funziona naturalmente per le persisted queries, e per l'endpoint unico e gli endpoint personalizzati funziona aggiungendo il parametro ?query={ GraphQL query } all'endpoint.

Descrizione

La cache HTTP funziona inviando un'intestazione Cache-Control con un valore max-age nella risposta, indicando per quanto tempo la risposta deve essere memorizzata nella cache.

L'estensione Cache Control offre le Liste di Cache Control, dove valori personalizzati di max-age vengono definiti per i campi e le direttive. Pertanto, query diverse contenenti diverse combinazioni di campi e direttive produrranno un valore max-age differente.

Il valore max-age della risposta viene calcolato automaticamente dal motore GraphQL. Il suo valore è il max-age più basso tra tutti i campi e le direttive della query richiesta (così come definito nella Lista di Cache Control), oppure no-store se:

  • viene eseguita una mutation
  • un campo o una direttiva ha max-age con valore 0
  • una regola di Controllo Accessi deve verificare lo stato dell'utente per un campo o una direttiva (nel qual caso, la risposta è specifica per l'utente, quindi non può essere memorizzata nella cache)

Definizione di una policy di cache control

Liste di Cache Control

Un nuovo Custom Post Type « Lista di Cache Control » viene aggiunto al sito. Possiamo sfogliare le sue voci nella pagina « Liste di Cache Control » nel menu, e cliccare su « Aggiungi Nuova Lista di Cache Control » per aggiungere una nuova voce nell'editor.

Liste di Cache Control
Liste di Cache Control

Editor di Lista di Cache Control

Ogni Lista di Cache Control contiene una o più voci, ciascuna con i seguenti elementi:

  • I campi e le direttive che, se compaiono nella query GraphQL, fanno entrare in vigore il max-age selezionato
  • Il max-age

Voce di Cache Control

Dopo aver creato la Lista di Cache Control, possiamo far sì che l'endpoint la utilizzi modificando la Configurazione dello Schema corrispondente, e selezionando l'elemento dalla lista sotto il blocco « Liste di Cache Control ».

Selezione di una Lista di Cache Control nella Configurazione dello Schema