Cloudflare anunció la disponibilidad de la compatibilidad con la cabecera de respuesta HTTP Vary dentro de la función Cache Rules para todos sus planes, incluidos Free, Pro, Business y Enterprise. La incorporación ofrece a los administradores de sitios un mayor control sobre cómo trata la red las solicitudes que pueden producir múltiples representaciones del mismo recurso, como diferencias de idioma, formato de imagen, tipo de contenido o método de compresión.
El servidor de origen indica mediante Vary las cabeceras de solicitud que pueden influir en la respuesta, pero la cabecera no especifica si todas las diferencias textuales entre los valores de esas cabeceras producen realmente una respuesta distinta. Por ello, el sistema de caché puede tratar valores similares como versiones independientes, fragmentando el contenido en un gran número de elementos con poca reutilización.
Tres métodos para gestionar la variación
Cloudflare permite aplicar una de tres acciones a cada cabecera que el origen incluya en Vary:
- normalize: normalizar los valores antes de seleccionar la versión almacenada; es la opción recomendada para cabeceras de negociación como Accept, Accept-Language y Accept-Encoding cuando muchos valores se convierten en un número limitado de respuestas.
- passthrough: utilizar el valor sin procesar, incluidos el uso de mayúsculas y minúsculas, los espacios, el orden y los valores duplicados, cuando la diferencia exacta influye en la respuesta.
- bypass: no almacenar la respuesta si la cabecera mencionada es personal o tiene una cardinalidad elevada, como Cookie o User-Agent.
En cambio, Vary: * siempre provoca que se omita la caché, porque cualquier parte de la solicitud, incluida información ajena al mensaje HTTP como la dirección IP, puede influir en la selección de la respuesta por parte del origen.
¿Qué cambia en la práctica?
Al utilizar la normalización, las solicitudes que difieren formalmente pero prefieren el mismo resultado pueden compartir la versión almacenada. Cloudflare reduce los valores de Accept, Accept-Language y Accept-Encoding a un formato unificado: convierte los valores a minúsculas y los ordena según la prioridad de calidad, con orden alfabético en caso de empate. El administrador también puede especificar los tipos de medios o idiomas compatibles, como text/html y application/json, o en, fr y de.
Sin embargo, este comportamiento puede eliminar diferencias que el origen necesita. Cloudflare señala que los valores q=0 o algunas excepciones de idioma pueden perderse durante la simplificación; por ello, debe utilizarse passthrough si el origen necesita ver esas exclusiones tal como las envió el cliente. Asimismo, transferir los valores sin procesar puede reintroducir el problema de la fragmentación: valores como compact,full y compact, full pueden producir dos claves de caché distintas aunque el origen los trate como equivalentes.
Responsabilidad del origen y límites de la actualización
El origen debe devolver Vary de manera coherente con cada respuesta almacenable que pueda variar según las cabeceras de solicitud, incluidas las respuestas de respaldo y los errores. Si una de las respuestas omite la cabecera adecuada, Cloudflare podría almacenar esa respuesta sin el aislamiento necesario.
Cambiar la configuración de Vary no elimina automáticamente el contenido existente; las entradas antiguas pueden permanecer hasta que caduquen o se ejecute una operación de purge. Además, la configuración de Vary no sustituye en todos los casos a una clave de caché personalizada: Cloudflare recomienda utilizar la clave personalizada cuando una propiedad de la solicitud forma parte fija de la identidad del recurso, y utilizar Vary cuando el origen declara, mediante la respuesta, los campos que realmente influyen en ella.
¿Por qué es importante esta noticia?
La actualización aborda una disyuntiva práctica en las redes CDN: ignorar Vary puede enviar al cliente un formato o idioma incorrecto, mientras que tratar literalmente cada valor puede reducir la tasa de aciertos de la caché y aumentar las solicitudes que regresan al origen. Según el artículo, un análisis de más de 120 millones de respuestas de unos 50 mil sitios populares mostró que cerca de 3 mil sitios utilizan la variación mediante cuatro campos o más, y algunos mediante 10, 23 o 47 campos.
El beneficio sigue estando ligado a la calidad con la que el origen define las representaciones que ofrece y a la elección de la acción adecuada para cada cabecera. La configuración está disponible desde el panel de Cloudflare, Rulesets API o Terraform, y es necesario probar los distintos valores y supervisar CF-Cache-Status después del despliegue.