Stale-While-Revalidate (SWR) es una directiva de caché HTTP definida en RFC 5861 (obsoleta por RFC 9213) y posteriormente en RFC 9213 (HTTP Caching). Permite que un caché sirva una respuesta 'stale' (obsoleta) a una solicitud del cliente si la respuesta almacenada en caché ha expirado, mientras que, simultáneamente y de forma asíncrona, inicia una solicitud al servidor de origen para revalidar el recurso. Esto significa que el usuario final recibe una respuesta casi instantánea, aunque potencialmente no sea la versión más reciente, mientras el caché trabaja en segundo plano para obtener una versión fresca. Si la revalidación es exitosa, la nueva versión se almacena en caché para futuras solicitudes. Si falla, el caché puede seguir sirviendo la versión 'stale' por un período adicional definido por 'stale-if-error'.

Esta estrategia es ampliamente implementada en el mundo real para optimizar la experiencia del usuario y reducir la latencia percibida. Es una característica clave en Content Delivery Networks (CDNs) como Cloudflare, Akamai y Amazon CloudFront, donde los 'edge caches' la utilizan para servir contenido rápidamente incluso si la caché local ha expirado. A nivel de aplicación, bibliotecas de 'frontend' como SWR de Vercel (para React) y 'useQuery' de React Query (ahora TanStack Query) implementan esta lógica para la gestión de datos, permitiendo que las interfaces de usuario muestren datos rápidamente y luego los actualicen una vez que se ha obtenido una versión más reciente del servidor. También se utiliza en 'proxies' inversos como NGINX y Varnish Cache para mejorar la disponibilidad y el rendimiento.

Para un arquitecto, Stale-While-Revalidate es crucial porque ofrece un equilibrio entre la frescura de los datos y la disponibilidad/rendimiento. Permite diseñar sistemas que priorizan la velocidad de respuesta al usuario, incluso a costa de servir datos ligeramente obsoletos por un breve período. Esto es especialmente valioso para aplicaciones con alta concurrencia o donde la latencia es crítica, como 'feeds' de noticias, listados de productos o paneles de control. Sin embargo, el arquitecto debe considerar los 'trade-offs': la consistencia de los datos puede ser un desafío si la obsolescencia es inaceptable para ciertas operaciones (ej. transacciones bancarias). Es fundamental definir políticas de caché adecuadas, incluyendo los tiempos 'stale-while-revalidate' y 'stale-if-error', para garantizar que la experiencia del usuario sea óptima sin comprometer la integridad de los datos críticos. También es importante monitorear la tasa de 'cache hits' y 'revalidations' para ajustar la estrategia de caché.