Por qué almacenar en caché el JSON de archivo progresivo

La carga progresiva reduce la cantidad de contenido de archivo incluido en el primer documento HTML. La contrapartida es que los lotes posteriores se convierten en solicitudes independientes. Almacenar en caché esas solicitudes evita que el mismo trabajo de archivo se repita para cada visitante.

El trabajo que hay detrás de un lote

Cuando una URL de JSON progresivo no está en caché, el flujo compatible POM Theme debe:

  1. Cargar WordPress y el código de la aplicación activa;
  2. Resolver el tipo de entrada, la configuración regional, el modo de archivo, el número de página y los elementos por página;
  3. Verificar que la URL siga coincidiendo con la configuración actual del archivo;
  4. Consultar las entradas de ese lote;
  5. Renderizar cada elemento del archivo con su plantilla actual;
  6. Preparar los datos de paginación y de la siguiente solicitud;
  7. Codificar la respuesta completa como JSON.

Ese trabajo es necesario para la primera respuesta válida. Aporta poco valor cuando un segundo visitante anónimo solicita exactamente el mismo lote antes de que cambie el contenido subyacente.

POM Cache almacena la respuesta completada. Una visita posterior puede evitar el trabajo de consulta y renderizado, y la ruta de entrega más temprana puede evitar la mayor parte o la totalidad del arranque de WordPress.

Por qué esto es independiente de la caché de páginas

La página de archivo y sus lotes de JSON tienen URL diferentes y tipos de respuesta diferentes:

/products/
/pom-json/archive/product/<context>/page-2-ppp-12.json

La primera es HTML. La segunda es JSON solicitado por el navegador después de que se carga la página. Borrar o desactivar solo la caché HTML no puede eliminar un lote de JSON obsoleto, y borrar solo el JSON no requiere desechar una estructura de página actual.

POM Cache mantiene, por tanto, dos almacenes independientes, dos conjuntos de controles en tiempo de ejecución, dos resúmenes de estado y botones separados en la pantalla de ajustes. El acceso directo de la barra de administración puede borrar ambos cuando haya que actualizar todo el sitio actual.

Dónde aparecen las mayores ganancias

El almacenamiento en caché del JSON resulta más útil cuando:

  • muchos visitantes recorren los mismos archivos públicos;
  • cada lote renderiza tarjetas enriquecidas, precios, imágenes, campos personalizados o datos de taxonomía;
  • un archivo progresivo se divide en varias secciones de taxonomía;
  • los lotes de archivo traducidos se solicitan repetidamente;
  • el origen tiene un coste significativo de arranque de WordPress o de base de datos;
  • una CDN puede reutilizar de forma segura la respuesta pública breve.

La ganancia puede ser modesta en un archivo pequeño y poco visitado. Puede ser considerable en un catálogo concurrido donde el mismo lote de página dos o de categoría se renderizaría de otro modo cientos de veces.

Mide tu propia carga de trabajo. POM Cache no promete deliberadamente un porcentaje universal de tiempo de respuesta porque el alojamiento, las plantillas, el coste de las consultas, la caché de objetos y el comportamiento de la CDN afectan al resultado.

Qué no almacena POM Cache en caché aquí

El subsistema de JSON progresivo es deliberadamente limitado. No:

  • almacena en caché puntos de conexión arbitrarios de la API REST;
  • almacena en caché solicitudes filtradas que requieren un resultado dinámico de cadena de consulta a través de la ruta estática temprana;
  • crea JSON de archivo antes de que una solicitud real lo necesite;
  • almacena en caché una respuesta que POM Theme marca como no almacenable en caché;
  • acepta rutas mal formadas, JSON no válido, archivos vacíos o archivos por encima del límite configurado;
  • sustituye a una CDN, una caché de base de datos o una caché de objetos de uso general;
  • elimina archivos almacenados simplemente porque son antiguos.

Este alcance permite a POM Cache reutilizar lotes de archivo públicos y deterministas sin fingir que toda respuesta JSON es segura para compartir.

El primer visitante sigue importando

La caché se genera bajo demanda:

first eligible request
→ dynamic archive render
→ valid JSON response
→ file written

later matching request
→ stored JSON reused

Después de una purga, el primer visitante de cada lote necesario vuelve a pagar el coste de generación dinámica. No hay ningún precargador de JSON integrado. Por eso una invalidación muy amplia puede aumentar brevemente el trabajo del origen en un sitio de mucho tráfico.

La vigencia es una decisión editorial

Los archivos no tienen un tiempo de vida en disco. Permanecen hasta que una invalidación o una eliminación manual los retira. Por tanto, debes elegir qué eventos de contenido borran el JSON:

  • cambios de entrada para los archivos cuyas tarjetas dependen de las entradas o de los términos asignados;
  • cambios de término para los archivos cuya agrupación, etiquetas u orden dependen de las taxonomías;
  • cambios de traducción cuando se almacena una salida localizada;
  • borrado manual tras cambios globales de visualización no cubiertos por una integración habilitada.

Este modelo explícito evita la eliminación periódica de respuestas perfectamente reutilizables. También hace responsable al propietario del sitio de habilitar las rutas de invalidación que coincidan con el flujo de trabajo de edición del sitio.

Decisión práctica

Habilita el almacenamiento en caché de JSON progresivo cuando se cumplan todas las condiciones siguientes:

  • POM Theme está generando URL de archivo progresivas;
  • la respuesta es pública y reutilizable;
  • el directorio de caché admite escritura;
  • dispones de un plan claro de invalidación;
  • puedes verificar la segunda solicitud en el origen;
  • tu política de CDN, si la hay, es compatible con la política de JSON Cache-Control.

Si el sitio no utiliza archivos progresivos, habilitar este subsistema no aporta ningún beneficio. La caché HTML estática puede seguir funcionando de forma independiente.

A continuación, sigue Habilitar la caché de JSON progresivo y después Medir el beneficio del almacenamiento en caché de JSON con un archivo representativo.