Caching
CachingCache Control

Cache Control

Included in the “Power Extensions” bundle

Al ejecutar consultas contra el servidor GraphQL mediante el método GET, la respuesta GraphQL puede cachearse en el cliente o en etapas intermedias entre cliente y servidor (como una CDN), apoyándose en el cacheo HTTP estándar.

Esto funciona de manera natural para las persisted queries, y para el endpoint único y endpoints personalizados funciona añadiendo el parámetro ?query={ GraphQL query } al endpoint.

Descripción

El cacheo HTTP funciona enviando una cabecera Cache-Control con un valor max-age en la respuesta, indicando durante cuánto tiempo debe cachearse la respuesta.

La extensión Cache Control ofrece Listas de Cache Control, donde se definen valores personalizados de max-age para campos y directivas. Por lo tanto, consultas distintas que contengan diferentes combinaciones de campos y directivas producirán un valor max-age distinto.

El valor max-age de la respuesta es calculado automáticamente por el motor de GraphQL. Su valor es el max-age más bajo de entre todos los campos y directivas de la consulta solicitada (tal como se define en la Lista de Cache Control), o no-store si:

  • se ejecuta alguna mutación
  • algún campo o directiva tiene max-age con valor 0
  • una regla de Control de Acceso debe comprobar el estado del usuario para algún campo o directiva (en cuyo caso, la respuesta es específica para el usuario, por lo que no puede cachearse)

Definiendo una política de cache control

Listas de Cache Control

Se añade al sitio un nuevo Custom Post Type "Lista de Cache Control". Podemos ver sus entradas en la página "Listas de Cache Control" del menú, y hacer clic en "Añadir Nueva Lista de Cache Control" para añadir una nueva entrada en el editor.

Listas de Cache Control
Listas de Cache Control

Editor de Lista de Cache Control

Cada Lista de Cache Control contiene una o varias entradas, cada una de ellas con los siguientes elementos:

  • Los campos y directivas que, si aparecen en la consulta GraphQL, hacen efectivo el max-age seleccionado
  • El max-age

Entrada de Cache Control

Después de crear la Lista de Cache Control, podemos hacer que el endpoint la utilice editando la Configuración del Esquema correspondiente, y seleccionando el elemento de la lista bajo el bloque "Listas de Cache Control".

Seleccionando una Lista de Cache Control en la Configuración del Esquema