Los encabezados personalizados no pasan a través de Dispatcher ni afectan al comportamiento del almacenamiento en caché

Los encabezados de respuesta personalizados como X-Robots-Tag, ETag y los encabezados de caché personalizados desaparecen cuando se proporciona una página a través de Dispatcher o rompen el almacenamiento en caché de CDN cuando hay una directiva Vary: User-Agent heredada. Dispatcher solo reenvía los encabezados de respuesta enumerados explícitamente en su configuración de /cache/headers y /headers, y Apache anula algunos encabezados (como ETag) a menos que se le indique que se aplace a AEM. Al permitir el encabezado en la configuración de la granja, garantizar que Apache lo reenvíe sin modificaciones, eliminar la directiva Vary: User-Agent heredada y borrar la caché, se restaura el paso y el almacenamiento en caché del encabezado correctos.

Descripción description

Entornos:

  • Adobe Experience Manager as a Cloud Service (AEMaaCS)
  • AEM Managed Services (AMS)
  • Software local de Adobe Experience Manager
  • AEM Dispatcher (Apache) y la capa de CDN

Problema/Síntomas:

  • Un encabezado está visible en AEM Publish con curl -I, pero falta en Dispatcher.
  • La red de distribución de contenido (CDN) no almacena en caché las páginas debido a Vary: User-Agent.
  • Los encabezados personalizados sólo aparecen cuando se agrega un parámetro de consulta (?a=b), porque Dispatcher omite la memoria caché.
  • Se ha perdido o modificado ETag, por ejemplo, Apache anexando -gzip.
  • Dispatcher devuelve contenido obsoleto porque los encabezados en caché no se actualizan.

Causa principal:

Dispatcher solo reenvía los encabezados de respuesta enumerados explícitamente en /cache/headers y /headers. Cuando un encabezado no está presente, Dispatcher lo elimina o utiliza metadatos de encabezado en caché. Apache anula los encabezados (como ETag) a menos que esté configurado para diferir a AEM. Algunas configuraciones de vhost heredadas incluyen Header append Vary User-Agent, que interrumpe el almacenamiento en caché de CDN debido a una cardinalidad variable excesiva. Las solicitudes de cadena de consulta omiten la caché, lo que hace que los encabezados que faltan aparezcan solo en las rutas almacenadas en caché.

Cómo confirmar

  1. Determine si el encabezado falta antes o después de Dispatcher. Ejecute curl -I con las direcciones URL de publicación y Dispatcher, y compare los conjuntos de encabezados. Si el encabezado aparece en Publicar pero falta o se modifica en Dispatcher, Dispatcher o Apache lo eliminan. Si ya falta en Publicar, corrija primero el código AEM.
  2. Compruebe si está involucrada la caché de Dispatcher. Volver a probar con un parámetro de consulta (curl -I con una dirección URL con ?a=b). Si el encabezado solo aparece con el parámetro de consulta, el recurso se proporciona desde la caché sin metadatos de encabezado almacenados.

Resolución resolution

Siga estos pasos para resolver el problema:

  1. Permita que el encabezado se almacene en caché en el archivo de granja. En el archivo de conjunto de servidores de publicación .any, agregue el nombre del encabezado al bloque /cache/headers (por ejemplo: X-Robots-Tag, ETag o Edge-Cache-Tag). Después de reiniciar y borrar la caché, ejecute curl -I y confirme que aparece el encabezado.

  2. Asegúrese de que Apache reenvía el encabezado sin sobrescribirlo. Para AMS y locales, edite el vhost:

    • Para ETag, agregue FileETag None y Header unset ETag.
    • Para un encabezado personalizado, establezca SetEnvIfNoCase X-Robots-Tag "(.+)$" X_ROBOTS_TAG=$1 y Header always set X-Robots-Tag "%{X-Robots-Tag}e" env=X_ROBOTS_TAG.

Ejecute apachectl -t, reinicie el servicio y confirme que curl -I muestra el encabezado.
​3. Permita que el encabezado se reenvíe (no almacene en caché) en el archivo de granja. Agregue el encabezado al bloque /headers para que Dispatcher lo reenvíe al cliente aunque la respuesta no se haya almacenado en caché y confirme con curl -I.
​4. Quite la directiva Vary: User-Agent heredada. Busque en los directorios vhost con grep -R "Vary User-Agent" . y comente las instancias que se encuentren, de modo que la CDN reanude las respuestas de almacenamiento en caché.
​5. Borre la caché después de los cambios de configuración. En AEMaaCS, utilice Entorno de → de Cloud Manager → Borrar caché. En AMS o de forma local, elimine los archivos en caché en <dispatcher_cache_path> o almacene en déclencheur un vaciado de activación y, a continuación, reinicie Apache. Confirmar curl -I muestra el encabezado correcto.
​6. Valide la asignación de dominio a granja. Confirme que vhost incluye el dominio solicitado para que Dispatcher utilice el conjunto de servidores de publicación correcto con las reglas de encabezado. Compruebe los registros de Dispatcher de Ningún conjunto de servidores coincide con el host; si aparece, agregue el dominio al vhost ServerName o ServerAlias y vuelva a intentarlo.

Validación

  1. Ejecute curl -I con la dirección URL de Dispatcher, confirme que el encabezado está presente y que coincide con Publicar.
  2. Confirme que el archivo de metadatos en caché (<path>.headers) se ha creado en el directorio de caché de Dispatcher.
  3. Confirme que no quedan encabezados no deseados (como Vary: User-Agent) en los vhosts y compruebe la proporción de visitas de caché de CDN antes y después del cambio.

Lectura relacionada

recommendation-more-help
experience-cloud-kcs-help-kbarticles