Clasifica los parámetros de seguimiento y las cabeceras de solicitud

POM Cache utiliza los parámetros de consulta y la cabecera HTTP Accept para decidir si una solicitud puede compartir una representación HTML. Estos filtros modifican la clasificación de las solicitudes, así que úsalos únicamente con propiedades que tengan un significado público estable.

Añade un parámetro de consulta solo de seguimiento

Los parámetros de seguimiento conocidos pueden eliminarse de la solicitud cacheable para que la atribución de marketing no cree ni omita HTML que por lo demás sería idéntico.

add_filter(
    'pom_cache_tracking_parameters',
    static function ( $parameters ) {
        $parameters[] = 'campaign_source';

        return array_values( array_unique( $parameters ) );
    }
);

Añadir campaign_source afirma que:

/offers/?campaign_source=newsletter

tiene exactamente la misma representación pública que:

/offers/

No clasifiques parámetros que afecten al idioma, la moneda, el precio, la búsqueda, la paginación, los filtros, la autenticación, el estado de vista previa, los experimentos, el consentimiento o el contenido. Las consultas que no son de seguimiento siguen siendo dinámicas salvo que su propietario registre explícitamente una política de variantes distinta, como se indica más abajo.

Cachea una consulta finita que modifica el contenido

Usa pom_cache_query_variant cuando una ruta ofrezca un conjunto pequeño y conocido de representaciones HTML anónimas. Por ejemplo, un catálogo público con un modo de visualización admitido puede registrar:

add_filter(
    'pom_cache_query_variant',
    static function ( $policy, $query, $path ) {
        if ( '/catalog/' !== $path || ! isset( $query['view'] ) ) {
            return $policy;
        }

        return array(
            'namespace'  => 'catalog-display-v1',
            'parameters' => array( 'view' => array( 'grid', 'list' ) ),
            'max_age'    => HOUR_IN_SECONDS,
        );
    },
    10,
    3
);

Esto crea representaciones separadas para ?view=grid y ?view=list; ninguna comparte la página sin parámetros de consulta. ?view=other y ?view=grid&currency=EUR siguen siendo dinámicas. Todos los valores deben ser cadenas explícitas. No uses términos de búsqueda sin restricciones, tokens, correos electrónicos ni identificadores como valores de variante.

Registra la política antes de init y mantenla estable durante la solicitud. Incluye una identidad de configuración en namespace cuando cambiar una conexión o un origen modifique la representación. Usa ignore únicamente para parámetros de atribución adicionales que lea el código del navegador, nunca para contenido ni autorización. El filtro recibe valores de consulta decodificados en bruto; su callback debe validar cualquier valor que utilice por sí mismo. POM Cache valida de forma independiente la lista de permitidos devuelta.

El mapa opcional headers acepta Cache-Control y X-Robots-Tag. Se envían en las respuestas cacheadas. Emite cabeceras coincidentes también en las respuestas en vivo. El registro autoriza explícitamente el almacenamiento en el origen; el almacenamiento en caché posterior del navegador o de la CDN sigue controlado por esas cabeceras. Esta funcionalidad no hace que una página privada o autenticada sea segura para compartir.

Las variantes se leen en wp_loaded, antes de la consulta principal de WordPress, y caducan según la hora de generación del archivo. Tras la caducidad, se devuelve un error de forma dinámica en lugar de almacenarlo o servir el archivo caducado. Las exclusiones de sesión, autenticación, método y tipo de contenido siguen aplicándose. Las rutas personalizadas no clasificadas también necesitan una decisión de pom_cache_only_cache_known_pages con un alcance limitado tras una representación correcta; una política de variantes por sí sola no las clasifica como una página válida.

Verifica cada representación por separado y, después, el orden de los parámetros, la atribución, los parámetros adicionales, la caducidad, los errores, las solicitudes autenticadas y el borrado de una sola URL. No modifiques las reglas de Apache para servir estas variantes directamente: PHP aplica su política y su caducidad.

Prueba la canonicalización

Para cada clave añadida:

  1. compara el cuerpo de la respuesta con y sin el parámetro;
  2. repite el proceso con todos los valores del parámetro;
  3. confirma que no cambian los datos de arranque de JavaScript;
  4. verifica las cookies, las redirecciones y las cabeceras;
  5. prueba el origen antes de una CDN;
  6. comprueba que la recopilación de analíticas siga funcionando en la capa que la gestiona.

Si el parámetro puede llegar a seleccionar contenido distinto, quítalo de este filtro.

Amplía la detección de Accept similares a JSON

POM Cache trata las solicitudes que anuncian tipos de medios similares a JSON como no HTML. Los valores predeterminados son:

  • application/json;
  • application/activity+json;
  • application/ld+json.

Añade otro fragmento de tipo de medio cuando un endpoint personalizado negocie una representación no HTML:

add_filter(
    'pom_cache_accept_headers',
    static function ( $media_types ) {
        $media_types[] = 'application/vnd.example.catalog+json';

        return array_values( array_unique( $media_types ) );
    }
);

Esto reduce la elegibilidad para HTML. Eliminar un valor predeterminado o devolver una lista incompleta es peligroso, porque una respuesta JSON podría tratarse entonces como candidata a HTML.

Detalles de la coincidencia de cabeceras

POM Cache compara el contenido de Accept en minúsculas con los fragmentos configurados. Registra valores de medios en minúsculas y no incluyas sintaxis de cabecera no relacionada.

Este filtro controla la clasificación de HTML; no crea una ruta JSON progresiva, no valida una carga JSON ni establece cabeceras de caché de CDN. Usa las API de JSON progresivo para esas responsabilidades.

Calendario y despliegue

La normalización de solicitudes puede comenzar durante la fase inicial del drop-in. Un callback registrado por un plugin normal puede influir en el comportamiento de la fase de WordPress sin estar disponible para todas las primeras comprobaciones de caché.

Después de cambiar cualquiera de los dos filtros:

  • borra los artefactos HTML existentes cuya canonicalización haya cambiado;
  • revisa las reglas de Apache copiadas y las claves de caché de la CDN;
  • prueba solicitudes limpias y con parámetros;
  • confirma que el contenido privado o negociado no pueda reutilizar un archivo HTML anterior.

pom_cache_query_variant_public_cookie recibe (bool $allowed, string $header) para cada cabecera de respuesta Set-Cookie . El valor predeterminado es false. Una integración puede devolver true únicamente para una preferencia pública exacta cuyo valor ya esté fijado por la URL admitida. Debe validar el nombre y el valor de la cookie; nunca permitas sesiones, autenticación ni cookies arbitrarias. El adaptador de facetas de POM lo usa para la preferencia de idioma correspondiente de POM Translate. Las respuestas marcadas con Cache-Control: private o no-store siguen omitiendo el almacenamiento.