Creare un'API
Creare un'APIAggiungere la cache HTTP

Aggiungere la cache HTTP

Quando le queries vengono eseguite contro il server GraphQL utilizzando GET (invece del metodo più tradizionale POST), la risposta GraphQL può essere memorizzata nella cache lato client o in fasi intermedie tra il client e il server (come un CDN), affidandosi alla cache HTTP standard.

Questo funziona naturalmente per le persisted queries, e per il single endpoint e i custom endpoint può funzionare aggiungendo il parametro ?query={ GraphQL query } all'endpoint.

La configurazione viene creata tramite una lista di controllo della cache, e fornita all'endpoint tramite la configurazione dello schema.

Eseguire l'endpoint tramite GET

Le persisted queries sono già adatte per essere eseguite tramite GET, poiché memorizzano la query GraphQL nel server (cioè non deve essere fornita nel corpo della richiesta).

Per il single endpoint e i custom endpoint, invece, la query deve essere fornita nel parametro ?query=... allegato all'URL dell'endpoint.

Ad esempio, la seguente query GraphQL:

{
  posts {
    id
    title
    url
    author {
      id
      name
      url
    }
  }
}

...può essere eseguita tramite GET contro il single endpoint in questo modo:

https://mysite.com/graphql/?query={ posts { id title url author { id name url } } }

Calcolo automatico del max-age

Il valore max-age della risposta viene calcolato automaticamente dalle liste di controllo degli accessi assegnate all'endpoint (tramite la configurazione dello schema).

Questo valore è il valore max-age più basso tra tutti i campi e le direttive nella query richiesta, oppure no-store se:

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

Max-age predefinito

I campi a cui non viene assegnato un max-age specifico utilizzeranno il valore predefinito, definito nella Configurazione dello Schema:

Valore max-age predefinito nella Configurazione dello Schema

Se non impostato, verrà utilizzato il valore max-age predefinito definito nella pagina delle Impostazioni, nella scheda "Cache Control". Questo valore, che è 86400 secondi, può essere modificato nelle Impostazioni.

Esempio

Supponiamo di avere la seguente configurazione di valori max-age per i campi del tipo User:

  • name => 600
  • url => 30

Quindi, la risposta a questa query avrà il valore max-age impostato a 86400 (perché né displayNameemail sono stati configurati, quindi utilizzano il valore predefinito):

query {
  users {
    displayName
    email
  }
}

La risposta a questa query avrà il valore max-age impostato a 30 (corrispondente a url, che è il valore più basso tra tutti i campi configurati):

query {
  user(by: {id: 1}) {
    name
    url
  }
}

La risposta a questa query avrà il valore max-age impostato a no-store (perché il campo me richiede lo stato dell'utente):

query {
  me {
    name
    url
  }
}

La risposta a questa query avrà il valore max-age impostato a no-store (perché esegue una mutation):

mutation {
  createPost {
    id
  }
}

Accedere a tutte le liste di controllo della cache

Cliccando su "Cache Control Lists" nel menu del plugin, viene visualizzato l'elenco di tutte le liste di controllo della cache create:

Liste di controllo della cache nell'amministrazione
Liste di controllo della cache nell'amministrazione

Creare una nuova lista di controllo della cache

Clicca sul pulsante "Add New Cache Control List" per aprire l'editor di WordPress:

Creazione di una lista di controllo della cache

Assegna un titolo alla lista di controllo della cache, aggiungi voci con campi e direttive, e configura il valore max-age per ciascuna:

Creazione di una lista di controllo della cache

Quando è pronta, clicca sul pulsante Publish. Dopodiché, la nuova lista di controllo della cache diventa disponibile per la configurazione dello schema.

Voci di Cache Control

Ogni lista di controllo della cache contiene una o più voci, ciascuna con i seguenti elementi:

  • I campi per cui configurare la memorizzazione nella cache
  • Le direttive per cui configurare la memorizzazione nella cache
  • Il valore max-age per ciascuno

Voce di controllo degli accessi

Selezionare campi dalle interfacce

Oltre ai campi dei tipi, è possibile selezionare anche campi dalle interfacce. In questo caso, il valore max-age viene applicato quando si interrogano quei campi da qualsiasi tipo che implementa l'interfaccia.

Selezionare un campo da un'interfaccia
Selezionare un campo da un'interfaccia

Descrivere la lista di controllo della cache

Utilizza il campo "Excerpt", nel pannello delle impostazioni del documento, per assegnare una descrizione alla lista di controllo della cache.

Per ulteriori informazioni, consulta la guida Aggiungere una descrizione all'API.

Utilizzare la lista di controllo della cache

Dopo aver creato la lista di controllo della cache, possiamo fare in modo che il Custom Endpoint o la Persisted Query la utilizzino modificando la Configurazione dello Schema corrispondente, e selezionando l'ACL dall'elenco nel blocco "Cache Control Lists".

Selezionare una lista di controllo della cache nella Configurazione dello Schema

Se la configurazione non viene personalizzata, verranno utilizzate le liste di controllo della cache predefinite definite nella pagina delle Impostazioni, nella scheda "Cache Control":

Selezionare le liste di controllo della cache predefinite nella pagina delle Impostazioni