Caché para SEO
Cómo la caché del navegador y del servidor, con Cache-Control, ETags y CDN, mejora el rendimiento y los Core Web Vitals, y qué errores de caché afectan al rastreo.
Idiomas
La caché guarda una copia de una página o recurso —en el navegador, en el edge de una CDN o en la caché del propio rastreador— para no tener que regenerarlo o descargarlo. No es un factor directo de posicionamiento, pero alimenta la velocidad de página/Core Web Vitals (mediante TTFB y LCP) y la eficiencia de rastreo. El rastreador de Google solo respeta ETag y Last-Modified (además de max-age como sugerencia de nuevo rastreo), prefiere ETag y dice que «no se admiten otras directivas de caché HTTP». Los errores más arriesgados no son las duraciones lentas, sino las malas configuraciones de CDN y las cachés obsoletas que bloquean o desorientan a los bots.
Evidence for this claim HTTP caching uses Cache-Control and validators to control reuse and revalidation. Scope: Current official or standards documentation. Confidence: high · Verified: MDN: HTTP caching Evidence for this claim Browser caches can reuse stored responses according to HTTP caching semantics. Scope: Current official or standards documentation. Confidence: high · Verified: MDN: HTTP cachingTL;DR — La caché consiste en guardar una copia de una página o archivo para no tener que volver a generarlo y enviarlo desde cero. Hace que tu sitio sea más rápido para las personas y para los bots de búsqueda, y permite que los bots no vuelvan a descargar páginas que no han cambiado. La caché no hará que posiciones mejor por sí sola, pero la velocidad que aporta y la eficiencia de rastreo que permite ayudan indirectamente.
Qué es la caché
Cada vez que alguien abre una página, el servidor tiene que trabajar: construir el HTML, enviar las imágenes y servir el CSS y JavaScript. La caché guarda una copia ya preparada de esos elementos para que la siguiente visita pueda reutilizarla en vez de repetir todo el trabajo.
Hay tres lugares donde puede vivir una copia que importan para el SEO:
- La caché del navegador: archivos guardados en el dispositivo del visitante, de modo que la segunda vista de una página o una visita de vuelta carga casi al instante.
- La caché de la CDN (edge): copias guardadas en servidores distribuidos por todo el mundo, para servir un archivo desde un lugar físicamente cercano al usuario (o al bot) en vez de desde tu único servidor de origen.
- La caché propia del rastreador: Googlebot y Bingbot recuerdan si una página cambió desde la última vez y evitan volver a descargarla si no cambió.
Por qué importa para el SEO
Hay dos motivos, y conviene mantenerlos separados:
- Velocidad. Una entrega más rápida ayuda a tus Core Web Vitals, especialmente a la rapidez con que responde el servidor (TTFB) y a la velocidad con que aparece el contenido principal (LCP). La velocidad forma parte de las señales de experiencia de página de Google.
- Eficiencia de rastreo. Cuando un bot puede saber que una página no ha cambiado, no desperdicia una descarga en ella. En un sitio grande, eso libera al bot para dedicar su tiempo a páginas nuevas y actualizadas.
Lo único que hay que dejar claro
«La caché de Google» y la «caché HTTP» son dos cosas distintas. El antiguo operador de búsqueda cache: —la función «ver la copia guardada de esta página por Google»— se retiró en 2024. Eso no tiene nada que ver con la caché de la que trata este artículo. Los encabezados Cache-Control y ETag siguen activos, funcionan bien y son importantes. Que falte una «versión en caché» de tu página en Google no dice nada sobre si tu configuración de caché es correcta.
Qué hacer realmente
- Guarda en caché tus archivos estáticos (imágenes, CSS, JavaScript y fuentes) durante mucho tiempo.
- Añade nombres de archivo versionados o con hash para poder actualizarlos al instante cuando haga falta.
- Usa una CDN para que los archivos carguen cerca de tus usuarios.
- No permitas accidentalmente que una caché obsoleta o compartida sirva algo incorrecto a los bots (el modo de fallo preocupante; consulta las pestañas Avanzado y Anti-patterns).
¿Quieres los detalles a nivel de encabezado —directivas Cache-Control, ETag frente a Last-Modified, la relación entre CDN y frecuencia de rastreo y los errores de caché que rompen el rastreo—? Cambia a la pestaña Avanzado.
Evidence for this claim Google's crawler documentation supports ETag/If-None-Match and Last-Modified/If-Modified-Since, prefers ETag when both are present, and says other HTTP caching directives are unsupported; Google's separate max-age advice is a recrawl-timing hint, not proof it follows browser cache semantics. Scope: Google crawling Confidence: high · Verified: Crawling December: HTTP caching Evidence for this claim HTTP caching uses Cache-Control and validators to control reuse and revalidation. Scope: Current official or standards documentation. Confidence: high · Verified: MDN: HTTP caching Evidence for this claim Browser caches can reuse stored responses according to HTTP caching semantics. Scope: Current official or standards documentation. Confidence: high · Verified: MDN: HTTP cachingTL;DR — La caché funciona en tres capas importantes para el SEO: navegador, edge de CDN y caché de solicitudes condicionales propia del rastreador. No es un factor de posicionamiento, pero impulsa la velocidad de página (TTFB/LCP y, mediante bfcache, los Core Web Vitals de las navegaciones repetidas) y la eficiencia de rastreo. El rastreador de Google prefiere ETag frente a Last-Modified, lee
max-agesolo como sugerencia de nuevo rastreo y, según su propia documentación, “other HTTP caching directives aren’t supported.” (traducción) «No se admiten otras directivas de caché HTTP.» Las CDN obtienen una asignación de frecuencia de rastreo mayor, pero solo cuando su caché está caliente; los riesgos reales son los lanzamientos con caché fría y las configuraciones incorrectas de CDN/WAF que bloquean directamente a los bots.
Las tres capas de caché
La caché para SEO no es una sola cosa: son tres, y cada una se controla de una manera algo distinta:
- Caché del navegador: el dispositivo del visitante guarda archivos para que las vistas repetidas eviten la red. Esto es lo que PageSpeed Insights recuerda con «Servir recursos estáticos con una política de caché eficiente».
- Caché de CDN/edge: una red de distribución de contenido guarda copias en nodos edge de todo el mundo (consulta el análisis profundo de CDN y SEO para conocer todos los detalles). Según la descripción de Google, las CDN son intermediarias entre tu origen y el usuario y, históricamente, su mayor foco es la caché: guardan el contenido de una URL para que tu servidor no tenga que servir ese archivo otra vez durante un tiempo.
- Caché del lado del rastreador: Googlebot y Bingbot mantienen su propio registro de si el contenido cambió mediante solicitudes condicionales. Esta es la palanca del presupuesto de rastreo; la mecánica corresponde al análisis profundo de solicitudes condicionales, así que aquí la resumiré.
«Caché del navegador» arriba es una forma abreviada de referirse a más de un mecanismo. Según la guía de caché HTTP de MDN, conviene distinguir la caché HTTP privada (por navegador, indexada por solicitud y, en los navegadores modernos, particionada por sitio de nivel superior para limitar el seguimiento entre sitios), la caché en memoria de la sesión actual, la bfcache que se explica abajo y, por separado, el Cache Storage de un service worker, controlado por el propio JavaScript del sitio y no gobernado directamente por los encabezados Cache-Control. «Comprobar la caché del navegador» puede significar cuatro pasos de depuración distintos según cuál esté fallando.
Cómo la caché alimenta los Core Web Vitals
Obtener recursos por la red es lento y costoso. La caché elimina la latencia de red y el coste de transferencia de todo lo que no ha cambiado. Eso repercute directamente en dos medidas relacionadas con los vitales: TTFB (una respuesta en caché evita regenerar el contenido en el origen) y LCP (las imágenes, el CSS y las fuentes en caché se renderizan antes).
Cache-Control, en las directivas que importan
Cache-Control es el encabezado principal. Estas son las directivas que conviene conocer:
max-age=<seconds>: cuánto tiempo es válida una copia reciente. Para recursos inmutables y versionados, la documentación de Lighthouse de Chrome recomienda guardar en caché un año o más, por ejemploCache-Control: max-age=31536000.no-cache: no significa «no guardar en caché». Significa «guárdalo, pero vuelve a validarlo con el servidor antes de reutilizarlo». Sigue habilitando el flujo ligero 304.no-store: es la directiva que realmente significa no guardar ninguna copia en ningún sitio de una caché HTTP. Es una directiva de caché, no un interruptor de privacidad general; según RFC 9111, no es una forma fiable de borrar el historial del navegador y no dice nada sobre el Cache Storage propio de un service worker.public/private: indica si las cachés compartidas (como una CDN) pueden guardar la respuesta o si solo puede hacerlo el navegador del usuario final.immutable: omite por completo la revalidación mientras la respuesta siga siendo reciente. No significa «nunca se queda obsoleta»: cuando se agotamax-age, vuelven a aplicarse las reglas normales de frescura.must-revalidate: el extremo opuesto de la línea temporal: solo importa después de que una respuesta se quede obsoleta y le dice a la caché que debe revalidar con el origen en vez de servir de todos modos la copia obsoleta.s-maxage,stale-while-revalidate,stale-if-error: controles más precisos, sobre todo para CDN y otras cachés compartidas (una duración de frescura separada para cachés compartidas, reutilización limitada de contenido obsoleto mientras se ejecuta una descarga en segundo plano y reutilización limitada de contenido obsoleto cuando falla el origen, respectivamente). La compatibilidad varía según el navegador/CDN, así que comprueba la compatibilidad actual antes de depender de ellas; como veremos, el rastreador de Google no respeta este conjunto adicional de directivas.
Invalidación de caché con nombres de archivo versionados
El truco que permite guardar agresivamente en caché y actualizar al instante: incluye un hash del contenido en el nombre de archivo, como style.x234dff.css. Como la URL es la clave de caché, cambiar el archivo cambia la URL, así que las cachés obtienen inmediatamente la versión nueva mientras las versiones antiguas permanecen en caché todo el tiempo que quieras. Tanto la guía de caché HTTP de web.dev de Google como el artículo de ingeniería de front-end de Bing describen el mismo patrón: Bing incluye un hash del contenido en la URL para que «the URL acts as the cache key,» (traducción) «la URL actúe como clave de caché», lo que mantiene coherentes las cachés y permite tiempos de expiración largos.
La trampa de bfcache: cómo no-store perjudica silenciosamente los CWV
Este caso se menciona menos de lo que debería. La caché de atrás/adelante (bfcache) es la que permite que pulsar «atrás» restaure una página al instante. Una restauración desde bfcache omite por completo la medición de LCP/CLS/INP, así que es una ventaja neta para tus datos de campo de CrUX. Sin embargo, según la guía de bfcache de Google, establecer Cache-Control: no-store en el documento de la página ha hecho históricamente que los navegadores se nieguen a guardar esa página en bfcache. Si necesitas frescura en un documento HTML pero no quieres sacrificar la elegibilidad para la caché de atrás/adelante, usa no-cache o max-age=0 en lugar de no-store.
Cómo decide una caché que algo está «lo bastante fresco»
Antes de que intervenga cualquier validador, una caché comprueba la frescura: ¿la antigüedad de la respuesta almacenada ha superado la duración de frescura que le dio Cache-Control (o, si no hay una duración explícita, una duración heurística que la caché puede estimar)? El encabezado de respuesta Age informa de cuánto tiempo ha conservado ya una respuesta una caché compartida; así puedes saber, en DevTools o en un registro de CDN, cuánto tiempo de frescura queda. Fresca significa que la caché puede reutilizarla inmediatamente, sin ninguna solicitud. Obsoleta significa que debería validarla antes de reutilizarla; justo ahí resultan útiles ETag/If-None-Match y Last-Modified/If-Modified-Since, que se describen a continuación para la versión más limitada de este mecanismo HTTP general que usa Googlebot.
Cómo usa Googlebot la caché (el ángulo de la eficiencia de rastreo)
Google hizo una petición inusualmente directa en su publicación de diciembre de 2024 Rastreo de diciembre: caché HTTP: habilita la caché para que sus rastreadores puedan evitar volver a descargar páginas sin cambios. El dato llamativo de esa publicación es que las descargas almacenables en caché han ido disminuyendo: hace 10 años se podía guardar en caché aproximadamente el 0,026 % del total de descargas y hoy esa cifra es del 0,017 %. Son cifras pequeñas, pero Google quiere claramente que vayan en la otra dirección.
ETag frente a Last-Modified: cuál prefiere Google
La infraestructura de rastreo de Google admite los dos validadores estándar: ETag (con If-None-Match) y Last-Modified (con If-Modified-Since). Google recomienda encarecidamente ETag porque su valor no está estructurado y, por tanto, es menos propenso a los errores de análisis que puede provocar una cadena de fecha; si ambos están presentes, sus rastreadores usan el valor de ETag, como exige el estándar HTTP. Aun así, Google recomienda establecer ambos, ya que otras aplicaciones, como los CMS los usan. Si utilizas Last-Modified, la fecha debe seguir el formato HTTP (por ejemplo, Fri, 4 Sep 1998 19:15:56 GMT) o no se analizará.
Cuando el validador almacenado por el rastreador sigue coincidiendo, tu servidor devuelve un 304 Not Modified sin cuerpo, que es precisamente el objetivo. Como dice Google, no tener cuerpo significa que tu servidor no gasta capacidad de cálculo en generar contenido ni ancho de banda en transferirlo. (Ese mecanismo 304 es el mecanismo de presupuesto de rastreo que se trata en profundidad en el artículo sobre solicitudes condicionales; aquí basta con saber que existe y ahorra dinero a ambas partes.)
El matiz que casi todo el mundo pasa por alto
El rastreador de Google no actúa sobre el conjunto completo de directivas Cache-Control como lo hace un navegador o una CDN. Según la descripción oficial de los rastreadores, aparte de ETag/Last-Modified, “other HTTP caching directives aren’t supported.” (traducción) «No se admiten otras directivas de caché HTTP.» La única excepción parcial: Google dice que puedes establecer max-age opcionalmente para ayudar a los rastreadores a determinar cuándo volver a rastrear una URL: una sugerencia de nuevo rastreo, no un bloqueo estricto. Así que no-cache, s-maxage, stale-while-revalidate y similares siguen dando forma al comportamiento del navegador y de la CDN, pero no cambian cómo guarda Googlebot la caché. El consejo de Google sobre cuándo invalidar también es sensato: exige una actualización de caché cuando haya cambios importantes; actualizar solo la fecha de copyright del pie de página no es importante.
CDN y rastreo
Una CDN te aporta más que velocidad. La infraestructura de rastreo de Google está diseñada para permitir frecuencias de rastreo más altas en sitios respaldados por una CDN, inferidas a partir de la dirección IP que sirve las URL: supone que un origen respaldado por una CDN puede gestionar más solicitudes simultáneas.
Pero hay un inconveniente que conviene planificar: la caché fría. En el primer acceso a una URL, la caché de la CDN está «fría»: nadie la ha solicitado todavía, así que tu origen tiene que servirla al menos una vez para calentar la caché. Google advierte que lanzar muchas URL a la vez supone por eso una carga real para el presupuesto de rastreo, con una frecuencia de rastreo alta durante unos días. Si haces un lanzamiento grande o una migración de sitio, reserva capacidad para que el origen soporte la carga completa de cada URL antes de que la CDN empiece a ayudar.
Una configuración incorrecta de CDN es un riesgo de rastreo
Los problemas relacionados con la caché más preocupantes no son las duraciones lentas, sino las configuraciones de CDN y WAF que bloquean a los bots. La publicación de Google sobre CDN es explícita: para bloqueos temporales, enviar 503/429 es la forma preferida de indicarlo, mientras que los tiempos de espera de red se tratan como errores terminales «duros» que pueden hacer que las URL se eliminen del índice. El caso sutil es un bloqueo blando: un intersticial de verificación de bots. El rastreador solo ve la página de desafío, no tu sitio; por eso Google recomienda encarecidamente devolver un 503 a los clientes automatizados. La forma más sencilla de comprobar que una CDN no está bloqueando Google silenciosamente es usar la herramienta de inspección de URL de Search Console: mira la imagen renderizada; si muestra un desafío para bots o una página vacía, habla con tu CDN.
Desviar las redirecciones a la CDN es una técnica que me gusta. En el podcast Marketing Speak lo describí así: “One of my personal favorites that I don’t think it’s used enough, it’s actually just off loading your redirects to the CDN level.” (traducción) «Una de mis favoritas personales, que creo que no se usa lo suficiente, es simplemente trasladar las redirecciones al nivel de la CDN.» (Ir a la cita).
Errores de caché que perjudican el rastreo y la indexación
Este es el ángulo que la mayoría de artículos sobre «caché para SEO» omite. Una caché no solo hace que las cosas sean rápidas: una caché incorrecta puede servir bytes equivocados a un bot y romper el rastreo o la indexación.
Un caso real: una caché compartida que sirve un robots.txt bloqueante. Analicé un caso de bloqueo intermitente de Googlebot que se remontaba a una caché de CDN compartida entre un entorno de pruebas y el sitio activo. Como escribí en Indexed, though blocked by robots.txt: “One possible cause would be a shared cache between a test environment and a live
environment. When the cache from the test environment is active, the robots.txt file
may include a blocking directive.” (traducción) «Una causa posible sería una caché compartida entre un entorno de pruebas y un entorno activo. Cuando está activa la caché del entorno de pruebas, el archivo robots.txt puede incluir una directiva de bloqueo.» La solución fue separar la caché o excluir los archivos .txt de la caché en el entorno de pruebas. Una mala configuración de caché provocó directamente un fallo de rastreo; esa es la categoría de riesgo que realmente causa problemas.
Otros errores de la misma familia:
- Caché de CDN obsoleta que sirve contenido antiguo a los bots. Si tu caché edge conserva una versión antigua mucho después de que hayas publicado un cambio, los bots siguen viendo la anterior. Purga al publicar o vincula la duración de la caché con la frecuencia real de cambio de la página.
- Fragmentación de la caché por
Vary/ User-Agent. La clave de una caché compartida normalmente es solo la URL;Varyañade encabezados de solicitud (comoUser-AgentoAccept-Language) a esa clave para que se almacenen por separado distintas variantes. Si omites un encabezado que realmente cambia la respuesta, un solicitante puede recibir la variante de otro: la confusión entre móvil/escritorio o bot/persona. Añade demasiados encabezados aVaryy fragmentarás la caché en tantas claves casi duplicadas que apenas mejorará la tasa de aciertos. Por separado, los navegadores modernos también particionan sus propias cachés por sitio de nivel superior para proteger la privacidad, así que un recurso guardado mientras estaba incrustado en un sitio normalmente no se reutiliza al incrustarlo en otro: es un mecanismo distinto deVaryque conviene no confundir al depurar un informe de «por qué esto no está en caché».
Mi regla general sobre la duración viene del trabajo de LCP: como dije en mi guía de Ahrefs sobre Largest Contentful Paint, “Your cache time should be as long as you are comfortable with” (traducción) «El tiempo de caché debería ser tan largo como te resulte cómodo.» y “An ideal setup is to cache for a really long period of time but purge the cache when you make a change to a page.” (traducción) «Una configuración ideal es guardar en caché durante un periodo realmente largo, pero purgar la caché cuando haces un cambio en una página.» La caché larga y la purga instantánea. Esa combinación es la que te mantiene rápido y fresco.
¿Es la caché un factor de posicionamiento?
No, no directamente. No existe una señal de posicionamiento por tener ETags configurados o una buena política Cache-Control. Lo que hace la caché es alimentar dos cosas que importan para la visibilidad: la velocidad de página/Core Web Vitals (un factor explícito de experiencia de página) y la eficiencia de rastreo (que determina a qué velocidad se descubre y actualiza el contenido nuevo y modificado, con un efecto indirecto en los resultados sensibles a la frescura). Configúrala porque hace que tu sitio sea rápido y fácil de rastrear, no porque esperes una mejora directa de posiciones.
Resumen de IA
Una versión condensada de la versión Advanced:
- La caché = tres capas para el SEO: caché del navegador, caché edge/CDN y caché de solicitudes condicionales propia del rastreador. Cada una se controla de una manera algo distinta.
- No es un factor de posicionamiento, pero impulsa dos cosas importantes: velocidad de página (TTFB/LCP y vitales de navegaciones repetidas mediante bfcache) y eficiencia de rastreo.
- Fundamentos de
Cache-Control:max-ageestablece la frescura (un año o más para recursos inmutables y versionados);no-cache= «guardar, pero volver a validar» (no «no guardar en caché»);no-store= no guardar nada;public/privatecontrola las cachés compartidas/CDN. - Invalidación: incluye un hash del contenido en el nombre de archivo para guardar agresivamente en caché y actualizar al instante (Google y Bing usan este patrón).
- Trampa de bfcache:
Cache-Control: no-storeen el documento HTML puede dejar una página fuera de la caché de atrás/adelante y perjudicar silenciosamente los vitales de CrUX. Usano-cacheomax-age=0. - Googlebot solo respeta ETag y Last-Modified (prefiere ETag; lee
max-agecomo sugerencia de nuevo rastreo). Según Google, QUOTE0. Un validador coincidente devuelve un304 Not Modifiedsin cuerpo, ahorrando capacidad de cálculo y ancho de banda. - Las CDN pueden recibir una asignación de frecuencia de rastreo mayor, pero solo cuando la caché está caliente. Los lanzamientos con caché fría siguen llegando al origen una vez por URL; planifícalo en lanzamientos grandes y migraciones.
- El mayor riesgo no es una caché lenta, sino una mala configuración de CDN/WAF que bloquee a los bots (devuelve 503/429 para bloqueos temporales y vigila los intersticiales de bloqueo blando) y las cachés obsoletas/compartidas que sirvan contenido incorrecto (por ejemplo, un robots.txt bloqueante).
Documentación oficial
Documentación de fuentes primarias de los motores de búsqueda y sus equipos de herramientas.
- Rastreo de diciembre: caché HTTP: publicación de Gary Illyes de diciembre de 2024 sobre ETag frente a Last-Modified, la mecánica 304, la estadística decreciente de descargas almacenables en caché y la sugerencia de nuevo rastreo
max-age. - Descripción general del rastreador de Google (agente de usuario): sección de caché HTTP: referencia viva con la regla de desempate de ETag y la frase «other HTTP caching directives aren’t supported».
- Rastreo de diciembre: CDN y rastreo: Splitt e Illyes sobre la caché de CDN, la asignación de frecuencia de rastreo mayor, los lanzamientos con caché fría y los bloqueos duros frente a blandos.
- Servir recursos estáticos con una política de caché eficiente: auditoría de Lighthouse/PageSpeed y guía de «un año o más» para recursos inmutables.
- Evitar solicitudes de red innecesarias con la caché HTTP: referencia de directivas y patrón de invalidación con nombres de archivo que contienen hash.
- Caché de atrás/adelante (bfcache): por qué
no-storeen el documento HTML puede costarte la elegibilidad para bfcache. - Índice de la serie Rastreo de diciembre: índice de la serie completa de 2024 sobre Googlebot, caché HTTP, navegación facetada y CDN.
Bing / Microsoft
- Rendimiento rápido del front-end para Microsoft Bing: el equipo de ingeniería de Bing explica cómo incluir hashes del contenido en las URL mejora la coherencia de la caché y permite expiraciones largas, además del papel de la CDN en la entrega rápida de recursos estáticos.
- bingbot Series: Maximizing Crawl Efficiency: la lógica de frescura del rastreo (rastrear menos cuando el contenido no ha cambiado) que permite la caché.
- Bing Webmaster Guidelines: el centro donde vive la orientación de Bing sobre CDN y rendimiento.
Citas de la fuente
Declaraciones públicas de Google y de mis propios escritos. Cada enlace es un enlace profundo que salta al pasaje citado de la página de origen.
Google: Rastreo de diciembre: caché HTTP
- “While Google’s crawling infrastructure supports heuristic caching mechanisms, in fact always had, the number of requests that can be returned from local caches has decreased: 10 years ago about 0.026% of the total fetches were cacheable, which is already not that impressive; today that number is 0.017%.” (traducción) «Aunque la infraestructura de rastreo de Google admite mecanismos de caché heurísticos, de hecho siempre los ha admitido, el número de solicitudes que pueden devolverse desde cachés locales ha disminuido: hace 10 años se podía guardar en caché aproximadamente el 0,026 % del total de descargas, lo que ya no era impresionante; hoy la cifra es del 0,017 %.» Ir a la cita
- “We strongly recommend using ETag because it’s less prone to errors and mistakes (the value is not structured unlike the Last-Modified value). And, if you have the option, set them both: the internet will thank you. Maybe.” (traducción) «Recomendamos encarecidamente usar ETag porque es menos propenso a errores y equivocaciones (el valor no está estructurado, a diferencia del valor Last-Modified). Y, si tienes la opción, configura ambos: Internet te lo agradecerá. Quizá.» Ir a la cita
- “Our recommendation is that you require a cache refresh on significant changes to your content; if you only updated the copyright date at the bottom of your page, that’s probably not significant.” (traducción) «Nuestra recomendación es que exijas una actualización de caché cuando haya cambios importantes en tu contenido; si solo has actualizado la fecha de copyright al pie de la página, probablemente no sea importante.» Ir a la cita
Google: descripción general de los rastreadores (sección de caché HTTP)
- “If both ETag and Last-Modified response header fields are present in the HTTP response, Google’s crawlers use the ETag value as required by the HTTP standard.” (traducción) «Si ambos campos de encabezado de respuesta ETag y Last-Modified están presentes en la respuesta HTTP, los rastreadores de Google usan el valor de ETag como exige el estándar HTTP.» Ir a la cita
- “Other HTTP caching directives aren’t supported.” (traducción) «No se admiten otras directivas de caché HTTP.» Ir a la cita
Google: Rastreo de diciembre: CDN y rastreo
- “Historically, CDNs’ biggest focus is caching, meaning that once a user requested a URL from your site, CDNs will store the contents of that URL in their caches for a time so your server doesn’t have to serve that file again for a while.” (traducción) «Históricamente, el mayor foco de las CDN es la caché: cuando un usuario solicitaba una URL de tu sitio, las CDN guardaban el contenido de esa URL en sus cachés durante un tiempo para que tu servidor no tuviera que volver a servir ese archivo durante un periodo.» Ir a la cita
Patrick Stox: sobre la caché y las CDN
- “Your cache time should be as long as you are comfortable with.” (traducción) «El tiempo de caché debería ser tan largo como te resulte cómodo.» — yo, en la guía de Ahrefs sobre Largest Contentful Paint. Ir a la cita
- “One possible cause would be a shared cache between a test environment and a live environment. When the cache from the test environment is active, the robots.txt file may include a blocking directive.” (traducción) «Una posible causa sería una caché compartida entre un entorno de pruebas y un entorno activo. Cuando está activa la caché del entorno de pruebas, el archivo robots.txt puede incluir una directiva de bloqueo.» — yo, sobre un fallo de rastreo real atribuido a una caché compartida. Ir a la cita
- “One of my personal favorites that I don’t think it’s used enough, it’s actually just off loading your redirects to the CDN level.” (traducción) «Una de mis favoritas personales, que creo que no se usa lo suficiente, es simplemente trasladar las redirecciones al nivel de la CDN.» — yo, en el podcast Marketing Speak. Ir a la cita
Caché para SEO: hoja de referencia
Directivas Cache-Control, descifradas
| Directiva | Lo que significa realmente | Úsala para |
|---|---|---|
max-age=31536000 | Fresca durante aproximadamente 1 año | Recursos estáticos inmutables y versionados/con hash |
no-cache | Guardarla, pero volver a validarla antes de reutilizarla (sigue usando 304) | HTML que quieres fresco y elegible para bfcache |
no-store | No guardar ninguna copia en una caché HTTP (no es un interruptor de privacidad general) | Solo respuestas realmente sensibles/privadas |
public | Las cachés compartidas (CDN) pueden guardarla | Recursos almacenables en la caché de CDN |
private | Solo puede guardarla el navegador del usuario final | Respuestas por usuario |
immutable | Omitir la revalidación mientras siga fresca (no «nunca obsoleta») | Recursos con huella |
must-revalidate | Una vez obsoleta, debe revalidarse antes de reutilizarse: no servirla obsoleta por un error | Contenido en el que una respuesta obsoleta incorrecta es peor que una más lenta |
s-maxage | Frescura específica para cachés compartidas (CDN) | Duraciones separadas para CDN y navegador |
stale-while-revalidate / stale-if-error | Reutilización limitada de contenido obsoleto mientras se vuelve a obtener o cuando falla el origen (la compatibilidad varía) | Páginas con mucho tráfico y resiliencia durante errores del origen |
Lo que realmente respeta Googlebot
- ✅
ETag+If-None-Match(el validador preferido por Google) - ✅
Last-Modified+If-Modified-Since(formatea la fecha según HTTP:Fri, 4 Sep 1998 19:15:56 GMT) - ✅
max-age, pero solo como sugerencia de momento de nuevo rastreo, no como regla - ❌ Todo lo demás: “other HTTP caching directives aren’t supported” (traducción) «no se admiten otras directivas de caché»
Datos rápidos
- Google prefiere ETag; si se establecen ambos, gana ETag. Configura ambos de todos modos (los CMS los usan).
- Un validador coincidente →
304 Not Modified, sin cuerpo → ahorra capacidad de cálculo y ancho de banda. - Chrome/Lighthouse: guarda los recursos inmutables un año o más.
- Las CDN obtienen una asignación de frecuencia de rastreo mayor, pero solo cuando la caché está caliente.
- ¿Bloqueo temporal? Devuelve 503/429, nunca una página silenciosa 200-con-error ni un intersticial para bots.
no-storeen el documento HTML puede descalificarlo para bfcache → usano-cache/max-age=0.- «La caché de Google» (operador
cache:) se retiró en 2024 y no está relacionada con la caché HTTP.
Mitos y errores sobre la caché
Cada uno: por qué es incorrecto y qué hacer en su lugar.
Mito: «Guardar mi página en caché mejorará mis posiciones». Por qué es incorrecto: no existe una señal de posicionamiento para la configuración de caché. El equipo de Search Relations de Google ha dejado claro que la caché no es un factor de posicionamiento. Qué hacer: configura la caché para obtener los beneficios reales: velocidad de página/Core Web Vitals y eficiencia de rastreo, que influyen indirectamente en la visibilidad. No esperes una mejora directa.
Mito: «La caché de Google y la caché HTTP son lo mismo».
Por qué es incorrecto: el operador de búsqueda cache: y el visor de páginas en caché eran una función de instantánea para usuarios, retirada por completo en 2024. La caché HTTP (Cache-Control/ETag) es infraestructura no relacionada.
Qué hacer: ignora la «versión en caché» que falta: no dice nada sobre tu configuración. Evalúa la caché por los encabezados y por el comportamiento de rastreo/rendimiento.
Mito: «no-cache significa no guardar en caché».
Por qué es incorrecto: no-cache significa «guárdalo, pero vuelve a validarlo con el servidor antes de usarlo». Sigue habilitando el flujo de revalidación 304. no-store es la directiva que realmente impide el almacenamiento.
Qué hacer: usa no-cache cuando quieras frescura con revalidación; reserva no-store para respuestas realmente sensibles que nunca deban almacenarse.
Mito: «Una duración de caché larga hace que Google vea contenido obsoleto para siempre».
Por qué es incorrecto: el rastreador de Google valida mediante ETag/Last-Modified al volver a rastrear, independientemente de tu max-age; max-age es una sugerencia de nuevo rastreo, no un bloqueo que impida que Google vuelva a obtener el contenido.
Qué hacer: guarda en caché durante mucho tiempo, pero activa una invalidación real (un ETag/Last-Modified o URL nuevos) cuando cambie significativamente el contenido, exactamente como recomienda Google.
Mito: «Una CDN arregla automáticamente los problemas de presupuesto de rastreo». Por qué es incorrecto: una CDN solo ayuda cuando su caché está caliente; el origen sigue sirviendo cada URL al menos una vez (el problema de la caché fría), y una CDN mal configurada puede bloquear a los rastreadores y empeorar las cosas. Qué hacer: planifica la carga del origen en lanzamientos o migraciones grandes y verifica que la CDN no bloquee a los bots (inspección de URL, y devuelve 503/429 para bloqueos temporales).
Mito: «Cualquier directiva Cache-Control que configure cambia la forma en que Googlebot rastrea».
Por qué es incorrecto: según la documentación de Google, aparte de ETag/Last-Modified (y la sugerencia opcional de max-age), “other HTTP caching directives aren’t supported”
(traducción) «no se admiten otras directivas de caché» el rastreador.
Qué hacer: usa stale-while-revalidate, s-maxage, no-cache, etc. para ajustar el comportamiento del navegador y de la CDN, pero confía en ETag/Last-Modified para influir en la caché de Googlebot.
Configuraciones de caché, antes y después
1. Recurso estático sin política de caché → desaparece el aviso de PageSpeed
- Antes:
style.cssse sirve sinCache-Control; Lighthouse marca «Servir recursos estáticos con una política de caché eficiente» y las visitas repetidas vuelven a descargarlo. - Después: cambia el nombre a
style.a1b2c3.cssy sirveCache-Control: public, max-age=31536000, immutable. Las visitas repetidas omiten la descarga; un cambio de contenido implica un nombre nuevo e invalida al instante.
2. Documento HTML que querías «fresco» → se pierde bfcache
- Antes:
Cache-Control: no-storeen el HTML para forzar la frescura. Efecto secundario: la página queda descalificada para bfcache, así que las navegaciones de «atrás» vuelven a medir LCP/CLS/INP y arrastran tus datos de campo de CrUX. - Después: cambia a
no-cache(omax-age=0): sigues revalidando para mantener la frescura, pero la página conserva la elegibilidad para bfcache y las navegaciones repetidas se restauran al instante.
3. Caché compartida entre staging y producción → bloqueo intermitente de Googlebot
- Antes: los entornos de pruebas y activo comparten una caché de CDN. Cuando está activa la versión de pruebas, el
robots.txtalmacenado en caché lleva una directiva de bloqueo, así que Googlebot ve intermitentemente un disallow que no debería ver. - Después: separa la caché entre entornos o excluye los archivos
.txtde la caché del entorno de pruebas, de modo que elrobots.txtactivo nunca se sirva desde una caché de staging. (Es un caso real que documenté en Indexed, though blocked by robots.txt.)
4. Gran lanzamiento detrás de una CDN → aumento de rastreo inesperado
- Antes: publicas 50 000 URL nuevas a la vez suponiendo que la CDN absorbe la carga. Cada URL es un fallo de caché fría, así que el origen sirve cada una al menos una vez y la frecuencia de rastreo se mantiene alta durante días.
- Después: calienta la caché antes del lanzamiento (o escalona el despliegue) y espera, además de reservar capacidad para ello, que el origen soporte la carga completa por URL antes de que la CDN empiece a protegerlo.
Lista de comprobación de configuración de caché HTTP
- Los recursos estáticos (imágenes, CSS, JS y fuentes) llevan un
max-agelargo (un año o más para archivos inmutables/versionados). - Se usan nombres de archivo versionados/con hash para poder guardar agresivamente en caché y aun así invalidar al instante.
- Está configurado
ETag(el validador preferido por Google) y tambiénLast-Modified, con una fecha HTTP correctamente formateada. - El servidor devuelve
304 Not Modified(sin cuerpo) cuando un validador sigue coincidiendo. - Los documentos HTML que necesitan frescura usan
no-cache/max-age=0, nono-store(protege la elegibilidad para bfcache). - Un cambio importante de contenido activa una invalidación real (nuevo ETag/Last-Modified/URL), no solo un cambio de fecha en el pie de página.
- Hay una CDN delante del origen, con
public/s-maxageconfigurados para que las cachés compartidas puedan guardar lo que deba compartirse. - La caché se purga al publicar para que los bots nunca reciban contenido obsoleto.
- Staging y producción no comparten caché para
robots.txtni para otros archivos de control. - Los bloqueos temporales devuelven
503/429, no páginas silenciosas 200-con-error ni intersticiales para bots. - La inspección de URL en Search Console muestra tu página real (no un desafío ni una página vacía), lo que confirma que la CDN/WAF no está bloqueando Googlebot.
Los archivos actualizados siguen obsoletos después del despliegue
Síntoma: los visitantes siguen recibiendo un archivo CSS, JavaScript o imagen antiguo. Causa probable: una caché de larga duración usa la misma URL para bytes modificados. Solución: publica recursos inmutables con nombres que incluyan el hash del contenido y actualiza la referencia HTML; purga el objeto edge antiguo solo cuando se haya reutilizado la URL. Confirma que carga la URL nueva.
Googlebot vuelve a descargar páginas sin cambios
Síntoma: los registros muestran respuestas 200 completas repetidas para HTML sin cambios. Causa probable: faltan validadores ETag/Last-Modified o son inestables. Solución: emite un validador estable y correcto para el contenido y prueba una solicitud condicional. Una revalidación que funciona devuelve 304 cuando la representación no ha cambiado.
Distintos usuarios reciben la variante incorrecta en caché
Síntoma: el contenido por idioma, dispositivo, sesión iniciada o personalización se filtra entre usuarios. Causa probable: la clave de caché compartida no incluye la dimensión que cambia la respuesta o el contenido privado se marcó como público. Solución: corrige la clave de caché y el comportamiento de Vary, marca adecuadamente las respuestas privadas, purga los objetos contaminados y vuelve a probar varias variantes.
La caché de la CDN nunca informa de un acierto
Síntoma: las solicitudes elegibles repetidas siguen llegando al origen. Causa probable: no-store/private, cookies, una clave de caché demasiado fragmentada o una regla de bypass en el edge. Solución: inspecciona los encabezados de respuesta y de estado de caché de la CDN, cambia solo las reglas seguras para esa clase de contenido y solicita dos veces la misma clave de caché para confirmar un acierto.
Guarda en caché según el riesgo de la representación, no solo según la extensión del archivo
Clasifica cada respuesta antes de asignar una política:
- Recurso público inmutable: el CSS, JS, las fuentes o imágenes cuyo contenido lleva hash pueden usar una duración larga porque los bytes modificados obtienen una URL nueva.
- Documento público pero cambiante: el HTML puede almacenarse brevemente o revalidarse con
ETag/Last-Modified; la frescura y la corrección rápida importan más que el TTL máximo. - Respuesta específica del usuario: la caché compartida no es segura a menos que se elimine la personalización de la representación o se separe correctamente en la clave de caché.
- Respuesta sensible: usa la política estricta que requieran los datos y acepta el coste de rendimiento en vez de exponer contenido.
La pregunta útil no es «¿Durante cuánto tiempo puedo guardar en caché este tipo?». Es «¿Qué estaría mal si esta representación exacta se reutilizara para este solicitante después de este cambio?».
Frescura, corrección y eficiencia
Una política de caché debe superar tres pruebas: frescura (los cambios aparecen cuando se prometió), corrección (el solicitante adecuado recibe la variante adecuada) y eficiencia (los bytes sin cambios no se regeneran ni transfieren innecesariamente). Una tasa de aciertos alta no es un éxito si sirve la respuesta incorrecta.
Herramientas para inspeccionar la caché HTTP
- Panel Network de DevTools del navegador: inspecciona
Cache-Control,ETag,Last-Modified,Age,Varyy si la respuesta procede de la memoria, el disco o la red. curl: envía solicitudesHEADy condicionales sin la ambigüedad de la caché del navegador; compara el validador inicial conIf-None-MatchoIf-Modified-Since.- PageSpeed Insights / Lighthouse: encuentra recursos estáticos con políticas de caché ineficientes; el artículo enlaza la guía oficial de políticas de caché de Lighthouse.
- Analítica y registros de la CDN: inspecciona el estado de acierto/fallo/bypass, las claves de caché, las solicitudes al origen y las purgas en la capa que realmente sirve la respuesta pública.
- Registros del servidor: verifica que Googlebot recibe revalidaciones
304en vez de cuerpos completos para páginas sin cambios.
Demostrar que un cambio de caché funciona
Prueba de solicitud condicional
Prueba que ejecutar: obtiene la respuesta, copia su ETag y después solicítala con If-None-Match. Resultado esperado: una representación sin cambios devuelve 304 sin cuerpo de respuesta. Interpretación del fallo: falta el validador, es inestable o se ignora. Ventana de monitorización: inmediata. Activador de reversión: el contenido cambiado recibe incorrectamente un 304 o el validador colisiona entre variantes.
Prueba de recurso versionado
Prueba que ejecutar: despliega los bytes cambiados en una URL nueva cuyo contenido incluya un hash y vuelve a cargar una página que la referencia. Resultado esperado: la URL nueva devuelve el recurso nuevo mientras la antigua puede seguir en caché. Interpretación del fallo: el HTML todavía referencia el recurso antiguo o la compilación no cambió el hash. Ventana de monitorización: inmediata después de la propagación de HTML/CDN. Activador de reversión: estilos rotos o errores de script en el recurso nuevo.
Prueba de variantes en caché compartida
Prueba que ejecutar: solicita cada variante significativa a través de la CDN, repite cada solicitud y compara el cuerpo, la clave/estado de caché y Vary. Resultado esperado: cada solicitante recibe la representación correcta y solo se reutilizan variantes seguras. Interpretación del fallo: falta una dimensión en la clave de caché o se comparte contenido privado. Ventana de monitorización: inmediata y revisión posterior de los registros de producción. Activador de reversión: un usuario recibe la respuesta personalizada o específica de idioma de otro usuario.
Ponte a prueba: caché para SEO
Cinco preguntas rápidas sobre caché HTTP, CDN y rastreo. Elige una respuesta para cada una y luego comprueba.
Registro de cambios
Actualizado el 8 ago 2026.
Resumen editorial y detalles registrados del cambio.Detalles del cambio
-
Los detalles del cambio están disponibles actualmente en inglés.
La comparación completa no está disponible: no se archivó una instantánea anterior para esta revisión.
Actualizado el 17 jul 2026.
Resumen editorial y detalles registrados del cambio.Detalles del cambio
-
Los detalles del cambio están disponibles actualmente en inglés.
-
Los detalles del cambio están disponibles actualmente en inglés.
-
Los detalles del cambio están disponibles actualmente en inglés.
La comparación completa no está disponible: no se archivó una instantánea anterior para esta revisión.