Reglas de caché

Ver en Markdown

Omite la caché o haz elegibles más peticiones por ruta, extensión, cookie o parámetro de consulta, con TTL del borde y del navegador por regla.

En esta página

Las reglas de caché cambian el comportamiento por defecto para las peticiones que casan con ellas. Úsalas para dejar fuera de la caché las páginas de administración y los visitantes con sesión, o para cachear el HTML.

Cómo se evalúan

  • Una zona (y cada nombre con lista propia) tiene hasta 25 reglas, que se evalúan en orden para las peticiones GET y HEAD.
  • Si casan varias, la última que casa gana en cada ajuste. Pon primero las reglas cache amplias y después las bypass que siempre deben ganar.
  • Un nombre hereda las reglas de la zona que le aplican o tiene su propia lista, que sustituye a la de la zona para ese nombre.

Condiciones

Deben cumplirse todas las listas que rellenes (Y); dentro de una lista basta con un valor (O). Una regla sin condiciones casa con todas las peticiones. Cada lista admite hasta 32 valores.

CampoPanelCasa cuando
match.path_prefixLa ruta empieza porLa ruta empieza por uno de los valores (cada uno empieza por /).
match.path_exactLa ruta es exactamenteLa ruta es exactamente uno de los valores.
match.extensionsExtensión de ficheroLa extensión del último segmento es uno de los valores, sin el punto; "" = sin extensión (/, /contacto).
match.cookie_presentLa petición trae la cookieLa petición trae una de estas cookies; un * final casa por prefijo (wordpress_logged_in_*).
match.query_presentLa URL lleva el parámetroLa URL lleva este parámetro de consulta, con o sin valor; un * final casa por prefijo.
hostsNombresSolo en las reglas de la zona: los nombres a los que se aplica; vacío = todos.

Como las listas de una regla se combinan con Y, pon las rutas exactas y los prefijos en reglas distintas cuando baste con cualquiera de ellos.

Acciones

actionPanelEfecto
bypassOmitir cachéNi se busca ni se guarda (DYNAMIC). No lleva parámetros.
cacheElegible para cachéElegible aunque la extensión no esté en la lista por defecto (HTML, JSON…), con los parámetros opcionales de abajo.

Parámetros de una regla cache

ParámetroValoresEfecto
edge_ttl.moderespect_originLas cabeceras del origen; sin ellas, los TTL por defecto (solo en las extensiones por defecto).
bypass_by_defaultLas cabeceras del origen; sin ellas, no se guarda.
override (con ttl_s)Ignora la Cache-Control del origen y guarda la respuesta ttl_s segundos. Quita Set-Cookie de la copia guardada y desactiva la armadura anti-engaño para estas peticiones.
edge_ttl.status[{"from": 200, "to": 299, "ttl_s": 300}]TTL por rango de códigos de estado, en cualquier modo: -1 = no guardar, 0 = guardar y revalidar siempre. Hasta 10 rangos.
browser_ttl{"mode": "respect_origin"} o {"mode": "override", "ttl_s": N}override sube el max-age del navegador hasta al menos N.
query{"mode": …, "sort": …, "params": […]}Política de consulta en la clave para estas peticiones. Consulta Claves de caché.
serve_stale{"while_revalidate": …, "on_error_max_s": …}Contenido caducado para estas peticiones.
vary_bypass_if_presentNombres de cabecera de petición en minúsculasConsulta más abajo.

Los TTL van de 1 segundo a 1 año; on_error_max_s, hasta 30 días.

Saltar la caché con ciertas cabeceras

vary_bypass_if_present (Saltar la caché si la petición trae estas cabeceras) lista cabeceras de petición, como rsc, next-router-state-tree, next-router-prefetch y next-router-segment-prefetch, las de la navegación interna de Next.js. Una petición que traiga alguna ni se busca ni se guarda (DYNAMIC, detail=vary). Las peticiones sin ellas reciben la versión cacheada normal, aunque el origen liste esas cabeceras en Vary. No se pueden listar accept-encoding, accept ni origin: ya diferencian la caché.

Plantillas

El panel (Caché › Reglas de caché › Empezar con una plantilla) rellena el editor de reglas; nada cambia hasta que guardas.

PlantillaReglas
WordPressOmite /wp-admin/ y /wp-login.php, y los visitantes con cookies de sesión de WordPress o WooCommerce. Opcionalmente cachea también el HTML anónimo 5 minutos.
Next.jsCachea las páginas (rutas sin extensión) hasta 10 minutos, solo las respuestas 200, ignorando en la clave los parámetros de anuncios. Nunca cachea las rutas de /api/, login, cuenta, carrito ni checkout, los visitantes con cookie de sesión ni la navegación interna de Next.js (cabeceras RSC, ?_rsc).
Web estáticaHTML 5 minutos, servido caducado mientras se actualiza o si el origen falla.
Solo valores por defectoQuita todas las reglas.
Cachear todoTodas las respuestas elegibles, según la Cache-Control del origen.
Omitir la caché para todoNo se cachea nada.

Añadir reglas

En Caché › Reglas de caché, pulsa Añadir regla, rellena Cuando las peticiones coincidan con… y Entonces…, y pulsa Aplicar. Reordena con las flechas y después pulsa Guardar cambios.

rules siempre se sustituye entera: envía la lista completa; [] quita todas las reglas. Las reglas sin id reciben r1, r2…

Comprobar una regla

curl -sI https://www.example.com/ | grep -i -E 'x-cache-status|cache-status'

Con HTML, pide dos veces: la segunda respuesta debe ser HIT. Una página que sigue en MISS o BYPASS no se está guardando; Cache-Status explica el motivo en detail. Consulta Solución de problemas.

Última actualización:

↑↓ para moverte↵ para abriresc para cerrar