Comprende la entrega temprana de la caché

La entrega temprana es la alternativa en PHP entre Apache y el renderizado normal de WordPress. Es rápida porque POM Cache puede devolver un index.html existente antes de que WordPress cargue los plugins activos, resuelva la consulta principal o seleccione una plantilla.

Cuándo comienza la fase uno

El núcleo de WordPress carga wp-content/advanced-cache.php solo cuando WP_CACHE es true. El drop-in de POM Cache carga entonces:

POM_CACHE_HOME . 'pom-cache-phase1.php'

La fase uno lee los ajustes de almacenamiento y de tiempo de ejecución efectivos para el sitio actual y prepara el mismo mapeado de host y ruta que se utiliza durante la generación.

Comprobaciones realizadas antes de la búsqueda

El tiempo de ejecución temprano devuelve el control a WordPress cuando la solicitud es:

  • una ruta interna de WordPress de administración, de acceso, de cron, de XML-RPC, de CLI o relacionada;
  • asociada a una cookie de acceso de WordPress, de contraseña de entrada o de autor de comentario;
  • asociada a una cookie de sesión o de carrito de WooCommerce;
  • POST, PUT o DELETE;
  • una solicitud de conjunto de cambios del Personalizador;
  • protegida por DONOTCACHEPAGE.

Si la ruta de caché configurada está vacía o se resuelve en /, POM Cache marca la solicitud como no cacheable en lugar de operar sobre un directorio no seguro.

Elegibilidad de las solicitudes estáticas

Para HTML, el método debe ser GET o HEAD. La URL no debe tener ninguna cadena de consulta significativa restante, no debe apuntar a rutas PHP/de administración de WordPress rechazadas y no debe solicitar JSON, JSON de ActivityPub o JSON de datos enlazados mediante la cabecera Accept.

Los parámetros de seguimiento reconocidos pueden ser eliminados por el tiempo de ejecución en PHP. Si al eliminarlos no queda ningún estado de consulta, se puede utilizar el archivo HTML canónico. Los parámetros que cambian el contenido siguen siendo una omisión.

Resolución del archivo

POM Cache construye la ruta candidata a partir de:

  • Cache Location;
  • el subdirectorio pom-cache;
  • el host de la solicitud actual sin su puerto;
  • la ruta de URL normalizada;
  • el nombre de archivo fijo index.html.

Resuelve la ruta real, verifica que el archivo existe y es legible, y confirma que permanece por debajo de la raíz de caché configurada. Una ruta que no supere la contención nunca se sirve.

La respuesta temprana

En un acierto válido, la fase uno:

  1. define DONOTCACHEPAGE para que ningún componente posterior intente cachear la respuesta de nuevo;
  2. establece el estado HTTP 200;
  3. envía Content-Type: text/html con el conjunto de caracteres del sitio de WordPress;
  4. envía Content-Length cuando está disponible;
  5. añade la cabecera de diagnóstico de POM Cache;
  6. lee el archivo para GET, u omite el cuerpo para HEAD;
  7. finaliza el procesamiento de la solicitud.

El valor de diagnóstico es:

X-POM-Cache: Served static cache from PHP; phase=early

Ningún hook de tema, shortcode, inyección de analítica realizada en PHP o callback normal de solicitud de plugin se ejecuta después de ese punto. Todo lo que se necesite en una página cacheada debe estar ya presente en el HTML almacenado o ser añadido por el navegador, el servidor web o la CDN.

Qué ocurre en un fallo temprano

Un fallo temprano no es un error. El drop-in devuelve el control a WordPress. La carga normal del plugin puede entonces registrar la fase dos, renderizar la página y decidir si la respuesta completada debe convertirse en un archivo nuevo.

La búsqueda tardía registrada por la fase dos está deshabilitada para el servido de forma predeterminada. Esto evita que un contexto de usuario o ruta recién conocido reutilice de forma casual HTML compartido. Los desarrolladores pueden implementar una política tardía explícita cuando puedan demostrar que la respuesta sigue siendo pública.

Verifica esta fase de forma aislada

  1. Asegúrate de que el informe de configuración de WordPress muestra tres estados OK.
  2. Mantén deshabilitada la entrega directa de Apache para la prueba.
  3. Genera un archivo de caché público con una solicitud sin sesión iniciada.
  4. Vuelve a cargar la URL exacta sin cookies ni cadena de consulta significativa.
  5. confirma la cabecera de respuesta phase=early;
  6. repite con HEAD y confirma que las cabeceras están presentes sin un cuerpo de respuesta;
  7. inicia sesión y confirma que la cabecera temprana desaparece.

Continúa con Comprende la generación de la caché después del renderizado de WordPress para ver cómo se produce el archivo utilizado por la fase uno.