Claves de caché

Ver en Markdown

Cómo decide el borde que dos peticiones comparten un objeto en caché, cómo entra la cadena de consulta en la clave y qué cabeceras Vary admite.

En esta página

La clave de caché identifica un objeto en caché. Dos peticiones con la misma clave reciben la misma respuesta cacheada.

Qué forma la clave

ParteCómo se normaliza
SitioCada nombre con proxy es un sitio propio, así que los nombres nunca comparten objetos.
HostEn minúsculas, sin puerto ni punto final.
RutaLos escapes %XX en mayúsculas, los escapes de caracteres no reservados decodificados y los segmentos . y .. resueltos. // se conserva y los caracteres reservados se quedan como llegan (%2F y / son distintos). Al origen se le envía la misma ruta.
Cadena de consultaSegún el nivel de caché.
VarianteSolo si el origen envía un Vary admitido.

Las cookies, la cabecera Authorization y las cookies del reto y de la puerta de acceso de OpenWAF nunca entran en la clave. Las claves de más de 4 KB no se cachean.

Cambiar los ajustes de consulta de un sitio o de sus reglas cambia sus claves, lo que equivale a purgar ese sitio.

Cadena de consulta

cache.query.mode, que en el panel se llama Nivel de caché, decide qué parte de la cadena de consulta entra en la clave:

ModoPanelClave
all (por defecto)Estándar: la cadena de consulta enteraLa consulta entera, tal como llega. ?v=1 y ?v=2 son objetos distintos.
ignoreIgnorar la cadena de consulta (ficheros estáticos)Sin consulta, pero solo en las extensiones estáticas por defecto. Las rutas que hace elegibles una regla conservan su consulta.
noneSin cadena de consulta: solo se cachean las peticiones sin ellaLas peticiones con consulta no se cachean (DYNAMIC).
includeSolo estos parámetrosSolo los parámetros de cache.query.params.
excludeTodos los parámetros salvo estosTodos los parámetros salvo los de cache.query.params, por ejemplo utm_*, fbclid, gclid.

Un * final en params casa por prefijo. Con cache.query.sort a true, los parámetros se ordenan, así que ?b=1&a=2 y ?a=2&b=1 comparten objeto. Una regla de caché puede fijar su propia política de consulta para las peticiones que casan con ella.

Vary

El borde guarda como mucho una variante por valor de las cabeceras Vary admitidas:

Cabecera VaryTratamiento
Accept-EncodingNo divide la caché: una sola copia, descomprimida al vuelo para los visitantes que lo necesitan.
AcceptSolo en respuestas image/*. Se normaliza a avif, webp u other, suficiente para los optimizadores de imágenes.
OriginSe normaliza a esquema://host[:puerto]. También se aplica cuando la respuesta trae un Access-Control-Allow-Origin distinto de *, aunque no lleve Vary: Origin, para que nunca se sirva la respuesta CORS de un sitio a otro.
Cualquier otra, incluidas *, Cookie y AuthorizationLa respuesta no se guarda (BYPASS).

Una regla de caché puede listar cabeceras de petición en vary_bypass_if_present (por ejemplo las cabeceras RSC y Next-Router-* de Next.js). Una petición que traiga alguna se salta la caché, y un Vary del origen que las nombre deja de impedir que se guarde la versión normal. Consulta Reglas de caché.

Cabeceras que se quitan antes del origen

En las peticiones elegibles, el borde quita cabeceras que no forman parte de la clave pero que un origen podría reflejar en la página, una vía habitual de envenenamiento de caché:

X-Original-URL, X-Rewrite-URL, X-HTTP-Method-Override, X-HTTP-Method, X-Method-Override, X-Host, X-Forwarded-Scheme, X-Forwarded-Server y X-Forwarded-Port.

Última actualización:

↑↓ para moverte↵ para abriresc para cerrar