Por qué algunas solicitudes nunca deben cachearse
Un archivo de página estática no tiene conocimiento del siguiente visitante. Una vez creado, puede entregarse sin PHP, sin búsqueda de usuario, sin comprobaciones de capacidades y sin lógica de aplicación. Por lo tanto, POM Cache trata la seguridad de la caché compartida como un requisito, no como una preferencia de rendimiento.
La pregunta que toda clave de caché debe responder
Dos solicitudes pueden compartir un solo archivo solo cuando cada diferencia que puede cambiar la respuesta está:
- representada en la ruta del archivo; o
- demostrada como irrelevante para el HTML público.
POM Cache genera las claves de las páginas estáticas por host y ruta de URL normalizada. No crea archivos de página separados para IDs de usuario, roles, contenido del carrito, contraseñas, dispositivos o valores de consulta arbitrarios.
Si cualquiera de esos contextos cambia el documento, la solicitud debe omitir la caché.
Identidad privada y permisos
Las cookies de inicio de sesión de WordPress indican que la respuesta puede contener:
- una barra de administración;
- enlaces de edición;
- contenido privado o en borrador;
- navegación específica según el rol;
- detalles de la cuenta;
- recomendaciones personalizadas.
Servir esa salida desde un archivo público podría divulgar información o mostrar los controles incorrectos. Las solicitudes autenticadas quedan excluidas de la entrega estática temprana y de la generación de caché.
Contraseñas, comentarios y estado de comercio
POM Cache también trata las siguientes familias de cookies como señales de omisión:
- cookies de contraseña de entrada;
- cookies de autor de comentario;
- cookies de sesión de WooCommerce;
- cookies de hash de carrito y de recuento de artículos de WooCommerce.
El valor de la cookie no se añade a un nombre de archivo. Toda la solicitud permanece dinámica. Este diseño evita una colección ilimitada de variantes privadas e impide que el estado de un visitante se convierta en la página de otro visitante.
El carrito, el pago, la cuenta y rutas igualmente con estado deberían permanecer protegidas también en cada capa anterior. Una CDN o una regla personalizada de Apache que ignore el contrato de omisión puede reintroducir el riesgo antes de que POM Cache se ejecute.
Precios por país y HTML universal
POM Tweaks Country pricing zones puede compartir una página de producto o catálogo entre países solo mientras su comprobación completa de seguridad de HTML universal sea correcta. POM Cache almacena ese resultado por sitio para que la capa temprana de caché pueda tomar la misma decisión antes de que WordPress se cargue. Solo una solicitud pública anónima GET o HEAD que por lo demás sea elegible para HTML compartido puede promover este estado almacenado a seguro. Las solicitudes de administración, autenticadas, REST, AJAX, cron y WP-CLI pueden colocar la integración en un estado pendiente conservador, pero no pueden certificar la ruta del proxy público.
Cuando la comprobación es correcta, las páginas de producto cacheadas contienen marcado de carga neutral en lugar del importe regional del visitante. Los precios, el estado de oferta, las acciones de compra, las variaciones y los resultados compatibles de POM Faceted Search se resuelven mediante solicitudes privadas después de la carga. El país deliberadamente no se añade a la clave de caché de página.
Cuando la comprobación no está disponible o informa de cualquier incompatibilidad, POM Cache ni sirve ni genera HTML compartido. Este estado de fallo cerrado se aplica a la caché de páginas completa del sitio actual porque las tarjetas de producto pueden aparecer fuera de las URL convencionales de la tienda.
Durante una migración desde WooCommerce Price Based on Country, la misma regla de fallo cerrado se aplica mientras cualquiera de los plugins de precios heredados esté activo y mientras el nuevo despliegue de precios permanezca en modo de omisión de caché. Una comprobación técnica correcta no anula un despliegue comercial sin terminar. POM Cache purga el HTML estático del sitio y actualiza su centinela de servicio temprano siempre que cambia el estado de despliegue aprobado.
Estado de la solicitud y representaciones
Una ruta no siempre es el significado completo de una solicitud.
?s=coffeeconvierte una página en resultados de búsqueda.- un parámetro de vista previa puede exponer cambios no publicados;
- las cabeceras
Acceptde REST y de datos enlazados solicitan una representación diferente; POST,PUTyDELETEpueden cambiar datos;- el Personalizador utiliza un estado de solicitud que no debe convertirse en HTML público.
POM Cache rechaza estos casos en lugar de adivinar si parecen inofensivos en una visita concreta.
Los parámetros solo de seguimiento son una excepción limitada en la ruta PHP. Los identificadores de campaña reconocidos pueden eliminarse para que compartan la página pública canónica. Si permanece cualquier valor de consulta significativo, la solicitud omite la caché.
La salida no válida no debe convertirse en una página duradera
La elegibilidad de la solicitud es solo la primera puerta. Después del renderizado, POM Cache rechaza las respuestas que indican un resultado inseguro o incompleto, incluyendo:
- terminación fatal de PHP;
DONOTCACHEPAGE;- redirecciones registradas durante la respuesta de WordPress;
- salida de REST, feed, sitemap o robots;
- páginas 404 en el árbol por URL (los 404 públicos elegibles utilizan un documento compartido separado);
- negociación de contenido no HTML;
- salida vacía o un documento sin un marcador de cierre reconocido.
El visitante actual sigue recibiendo la respuesta de WordPress. El rechazo solo impide que esa respuesta se conserve para visitantes posteriores.
La seguridad se extiende más allá de POM Cache
Toda la cadena de entrega debe estar de acuerdo:
CDN policy
↓
web-server rewrite conditions
↓
POM Cache early checks
↓
WordPress final-response checks
Una comprobación de aplicación más segura no puede deshacer un impacto inseguro en el borde que ocurrió antes. Revisa las reglas de cookies, método, cadena de consulta, host y ruta siempre que cambie la configuración de la CDN o del servidor web.
Prueba el límite antes de producción
Construye una pequeña matriz utilizando la misma URL pública:
| Prueba | Comportamiento esperado |
|---|---|
GET limpio sin iniciar sesión |
Puede alcanzar o generar HTML estático |
| Navegador con sesión iniciada | Omite el archivo público |
| Navegador autorizado por contraseña | Omite |
| Sesión de carrito de WooCommerce | Omite |
| Cadena de consulta significativa | Omite |
| Consulta solo de seguimiento | Puede reutilizar el archivo canónico a través de PHP |
Cabecera JSON Accept |
No recibe HTML cacheado |
| Solicitud de vista previa o del Personalizador | Omite |
| La comprobación de seguridad de precios por país no es correcta | Omite |
Comprueba que el contenido devuelto sea correcto, no solo que el estado sea 200.
Si una integración tiene una excepción genuinamente pública, documenta el invariante y utiliza los controles de elegibilidad para desarrolladores. No hagas una regla global más amplia solo para mejorar un punto de referencia.