Caché de páginas, CDN y banners de consentimiento: cómo evitar servir el estado de consentimiento equivocado

Páginas rápidas, consentimiento equivocado

El almacenamiento en caché de páginas es una de las mejores cosas que puedes hacer por la velocidad y los costes de alojamiento. También es una de las formas más fáciles de romper una configuración de consentimiento sin darte cuenta. Una caché hace exactamente lo que se le dice: guarda una respuesta una vez y la sirve a todos los que coinciden con la misma clave. Si esa respuesta almacenada contiene algo específico de la elección de consentimiento o la ubicación de un visitante, el siguiente visitante también lo recibe.

Esta guía cubre las capas de caché que suelen situarse delante de un sitio de publisher — cachés de borde de CDN, plugins de caché de página completa, reverse proxies, service workers y el propio navegador — y cómo evitar que cada una sirva la experiencia de consentimiento equivocada.

La regla básica: mantener el consentimiento fuera del HTML en caché

La arquitectura más segura genera la página HTML en caché neutral respecto al consentimiento. La página contiene el cargador del CMP y tus etiquetas en estado bloqueado o en espera, pero ninguna decisión sobre este visitante en concreto. Después el CMP se ejecuta en el navegador, lee la elección guardada, decide si mostrar el banner y libera las etiquetas en consecuencia.

Los problemas empiezan cuando el servidor toma decisiones de consentimiento en el momento del renderizado, por ejemplo:

Una vez que esa página se guarda en caché, el estado del primer visitante pasa a ser el de todos. Un visitante que rechazó el rastreo puede recibir una página con las etiquetas ya activas, o un visitante nuevo puede no ver nunca un banner porque la copia en caché procede de alguien que ya lo había cerrado.

Por qué «Vary: Cookie» rara vez es la respuesta

La solución de manual para el contenido por visitante es indicar a las cachés que varíen según la cabecera de cookies. En la práctica, los visitantes llevan muchas cookies con valores únicos, así que variar según toda la cabecera de cookies suele dejar tu tasa de aciertos de caché casi en cero. Algunos CDN permiten construir la clave de caché a partir de un único valor de cookie, lo cual es viable si tu cookie de consentimiento tiene pocos estados posibles, pero añade complejidad y aun así multiplica el número de copias en caché. Trasladar la decisión al navegador es más sencillo y mantiene la caché eficiente.

La geografía en el borde

Muchos publishers muestran banners distintos según la región: un banner de opt-in para la UE y el Reino Unido, un aviso de exclusión para los estados de EE. UU. y algo más ligero en el resto. Si el servidor elige la variante según la dirección IP del visitante y esa página se guarda en caché, un lector europeo puede recibir una página estadounidense en caché, o al revés.

Tres patrones evitan esto:

  1. Geolocalización en el cliente. Deja que el CMP determine la región en el navegador, de modo que el HTML en caché sea el mismo para todos.
  2. El país en la clave de caché. Si debes decidir en el borde, incluye en la clave de caché el código de país que proporciona tu CDN. Obtienes una copia en caché por país, lo cual es predecible.
  3. Lógica de borde sin caché. Ejecuta la decisión regional en una función de borde que inyecte un pequeño valor sin caché en una página que por lo demás sí está en caché.

Elijas lo que elijas, documéntalo. Los errores geográficos están entre los más difíciles de reproducir, porque solo aparecen para visitantes de un lugar que casualmente reciben una página guardada en caché por alguien de otro.

Almacenar en caché el propio script del CMP

Guardar en caché el cargador del CMP durante mucho tiempo es bueno para el rendimiento, pero tiene un coste cuando cambia la configuración. Si actualizas proveedores, finalidades o el texto del banner y el script o el archivo de configuración está en caché durante un año, algunos visitantes seguirán viendo la versión antigua. Comprueba cómo versiona sus archivos tu CMP: un nombre de archivo o un parámetro de versión que cambie te permite almacenar en caché de forma agresiva y aun así desplegar los cambios de inmediato. Confirma también que tu propio CDN no elimina las cadenas de consulta de las URL de scripts de terceros si el CMP depende de ellas.

Service workers y cachés sin conexión

Los sitios con una capa de aplicación web progresiva suelen guardar HTML en caché en un service worker. Se aplica la misma regla: nunca almacenes una página que refleje una decisión de consentimiento concreta. Excluye de la caché del service worker los endpoints relacionados con el consentimiento y las páginas del centro de preferencias, y asegúrate de que siempre se pueda obtener una configuración reciente del CMP.

La caché de ida y vuelta

Los navegadores modernos mantienen en memoria las páginas visitadas recientemente para que el botón de retroceso las restaure al instante. Si un visitante abre el centro de preferencias en una página, retira el consentimiento y luego pulsa retroceso, la página restaurada puede seguir teniendo etiquetas en ejecución de antes. Escucha el evento pageshow y comprueba su propiedad persisted: cuando una página se restaura desde esta caché, vuelve a leer el estado de consentimiento guardado y detén o inicia las etiquetas para que coincidan.

Una rutina de pruebas

Conclusiones clave

← Blog Leer todo →