<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Varnish on javierin.com</title>
		<link>https://javierin.com/category/varnish/</link>
		<description>Recent content in Varnish on javierin.com</description>
		<generator>Hugo</generator>
		<language>es-ES</language>
		
		
		
		
			<lastBuildDate>Mon, 01 Jun 2026 14:54:16 +0000</lastBuildDate>
		
			<atom:link href="https://javierin.com/category/varnish/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>Varnish Cache Grace Mode: Cómo Salvar tu Web Cuando el Backend Falla</title>
				<link>https://javierin.com/varnish-cache-grace-mode/</link>
				<pubDate>Wed, 05 Nov 2025 00:09:55 +0000</pubDate>
				<guid>https://javierin.com/varnish-cache-grace-mode/</guid>
				<description>Imagina la escena. Es lunes, hora punta. Acabas de lanzar una campaña de marketing brutal y el tráfico a tu web está por las nubes. De repente, recibes una alerta: el &lt;a href=&#34;https://www.amazon.es/dp/B0CJQG8CWJ?tag=javierin-21&amp;amp;linkCode=osi&amp;amp;th=1&amp;amp;psc=1&#34; target=&#34;_blank&#34; rel=&#34;nofollow noopener sponsored&#34;&gt;servidor principal&lt;/a&gt;, tu &lt;em&gt;backend&lt;/em&gt;, se ha caído. El pánico se apodera de ti. Piensas en los usuarios viendo un feo mensaje de error, en las ventas perdidas, en la reputación dañada...&#xA;&#xA;Pero, ¿y si te dijera que tus usuarios no notaron absolutamente nada? ¿Que siguieron navegando, viendo tus productos y leyendo tus artículos como si todo funcionara a la perfección? No, no es brujería. Se llama &lt;strong&gt;Varnish Cache Grace Mode&lt;/strong&gt;, y en 2025, es una de las herramientas más potentes que tienes a tu disposición para garantizar la alta disponibilidad de tu web.&#xA;&lt;h3&gt;¿Qué es Varnish y por qué es tu Mejor Amigo?&lt;/h3&gt;&#xA;Antes de meternos en faena, un repaso rápido. Varnish Cache es lo que se conoce como un &lt;em&gt;proxy caché HTTP inverso&lt;/em&gt;. Suena técnico, pero la idea es sencilla: se coloca delante de tu servidor web (el backend) y guarda una copia de las páginas que sirve. Cuando un usuario pide una página, en lugar de molestar al servidor principal cada vez, Varnish le entrega la copia que tiene guardada. ¿El resultado? Una velocidad de carga espectacularmente más rápida y un servidor mucho más relajado.&#xA;&#xA;Pero su verdadera magia no reside solo en la velocidad. Varnish tiene un as en la manga para situaciones de crisis, y ese as es el &lt;strong&gt;varnish-cache-grace&lt;/strong&gt;.&#xA;&lt;h3&gt;El Desastre Evitado: Del Error 503 a la Normalidad&lt;/h3&gt;&#xA;En una configuración normal, si Varnish pide una página al backend y este no responde (porque está caído, sobrecargado o en mantenimiento), Varnish se encoge de hombros y le devuelve al usuario un error, normalmente un &#34;Error 503 Backend fetch failed&#34;. Es sincero, sí, pero terrible para la experiencia de usuario.&#xA;&#xA;Aquí es donde entra en juego el Grace Mode. Esta funcionalidad le da &#34;superpoderes&#34; a Varnish, permitiéndole tomar una decisión inteligente: &#34;Oye, mi backend no responde, pero tengo aquí una copia de esta página que caducó hace solo unos minutos. &lt;strong&gt;Aunque está técnicamente caducada, es mucho mejor que mostrar un error&lt;/strong&gt;. Así que voy a servir esta versión &lt;em&gt;vieja&lt;/em&gt; mientras intento que el backend reviva&#34;.&#xA;&#xA;El usuario ve contenido. La empresa no pierde la visita. Y tú, como responsable técnico, tienes un respiro valiosísimo para arreglar el problema sin que el mundo arda.&#xA;&lt;h3&gt;&lt;code&gt;beresp.grace&lt;/code&gt;: El Corazón del Varnish Cache Grace&lt;/h3&gt;&#xA;La directiva que hace posible toda esta magia se llama &lt;code&gt;beresp.grace&lt;/code&gt;. Esta es una instrucción que le das a Varnish dentro de su fichero de configuración (VCL).&#xA;&#xA;En esencia, &lt;code&gt;beresp.grace&lt;/code&gt; define un &lt;strong&gt;periodo de gracia&lt;/strong&gt; para los objetos cacheados. Funciona así:&#xA;&lt;ol&gt;&#xA; &#x9;&lt;li&gt;Cuando Varnish obtiene un contenido del backend, le asignas un tiempo de vida o &lt;strong&gt;TTL&lt;/strong&gt; (Time To Live). Por ejemplo, 10 minutos (&lt;code&gt;beresp.ttl = 10m;&lt;/code&gt;). Durante esos 10 minutos, el objeto es &#34;fresco&#34; y se sirve directamente desde la caché.&lt;/li&gt;&#xA; &#x9;&lt;li&gt;Pasados los 10 minutos, el objeto &#34;caduca&#34; o se vuelve &lt;em&gt;stale&lt;/em&gt;.&lt;/li&gt;&#xA; &#x9;&lt;li&gt;Aquí es donde &lt;code&gt;beresp.grace&lt;/code&gt; entra en acción. Si has definido, por ejemplo, &lt;code&gt;beresp.grace = 2h;&lt;/code&gt;, le estás diciendo a Varnish: &#34;Una vez este objeto caduque, tienes permiso para seguir sirviéndolo durante 2 horas más, &lt;strong&gt;siempre y cuando el backend no esté disponible para darte una versión nueva&lt;/strong&gt;&#34;.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;Este mecanismo es la clave del &lt;strong&gt;varnish-cache-grace&lt;/strong&gt;, ya que convierte una copia caducada en un salvavidas temporal.&#xA;&lt;h3&gt;Configurando &lt;code&gt;beresp.grace&lt;/code&gt;: Un Ejemplo Práctico&lt;/h3&gt;&#xA;Hablar está muy bien, pero vamos a ver cómo se implementa esto en el mundo real. A continuación tienes un fragmento de un fichero de configuración VCL (Varnish Configuration Language) que activa el Grace Mode. No te asustes, lo explicaremos línea por línea.&#xA;&lt;pre&gt;#Esto es un ejemplo para Varnish 4.1 o superior&#xA;&#xA;vcl 4.1;&#xA;&#xA;#Definimos nuestro servidor backend&#xA;&#xA;backend default {&#xA;.host = &#34;127.0.0.1&#34;;&#xA;.port = &#34;8080&#34;;&#xA;}&#xA;&#xA;#Esta subrutina se ejecuta al recibir la respuesta del backend&#xA;&#xA;sub vcl&lt;em&gt;backend&lt;/em&gt;response {&#xA;# 1. Establecemos el tiempo de vida normal del objeto en caché.&#xA;# En este caso, 15 minutos.&#xA;set beresp.ttl = 15m;&#xA;&#xA;# 2. ¡Aquí está la magia! Establecemos el periodo de gracia.&#xA;# Le decimos a Varnish que puede servir este objeto caducado&#xA;# hasta durante 2 horas si el backend falla.&#xA;set beresp.grace = 2h;&#xA;&#xA;&#xA;}&#xA;&#xA;#Esta subrutina se ejecuta cuando Varnish encuentra el objeto en caché&#xA;&#xA;sub vcl_hit {&#xA;# Si el TTL del objeto es mayor a 0, significa que está fresco.&#xA;if (obj.ttl &amp;gt;= 0s) {&#xA;# Servimos la copia fresca. ¡Todo bien!&#xA;return (deliver);&#xA;}&#xA;&#xA;# Si llegamos aquí, el objeto está caducado (TTL &amp;lt; 0).&#xA;# Comprobamos si todavía estamos dentro del periodo de gracia.&#xA;if (obj.grace &amp;gt; 0s) {&#xA;    # ¡Sí! Servimos la copia caducada pero &#34;graciosa&#34;.&#xA;    # El usuario ve la web y nosotros ganamos tiempo.&#xA;    return (deliver);&#xA;}&#xA;&#xA;# Si no tiene ni TTL ni gracia, intentamos refrescarlo.&#xA;return (fetch);&#xA;&#xA;&#xA;}&lt;/pre&gt;&#xA;&lt;strong&gt;¿Qué hemos hecho aquí?&lt;/strong&gt;&#xA;&lt;ol&gt;&#xA; &#x9;&lt;li&gt;En &lt;code&gt;vcl_backend_response&lt;/code&gt;, que se activa justo después de que Varnish reciba contenido del servidor, hemos definido dos valores clave: &lt;code&gt;beresp.ttl&lt;/code&gt; para la vida útil normal y &lt;code&gt;beresp.grace&lt;/code&gt; para el periodo de gracia.&lt;/li&gt;&#xA; &#x9;&lt;li&gt;En &lt;code&gt;vcl_hit&lt;/code&gt;, que se activa cuando Varnish encuentra una copia en su caché, hemos añadido una lógica muy simple: si la copia es fresca (&lt;code&gt;obj.ttl &amp;gt;= 0s&lt;/code&gt;), la servimos. Si está caducada pero aún le queda tiempo de gracia (&lt;code&gt;obj.grace &amp;gt; 0s&lt;/code&gt;), &lt;strong&gt;también la servimos&lt;/strong&gt;.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;Esta configuración tan sencilla es la base de una estrategia de &lt;strong&gt;varnish-cache-grace&lt;/strong&gt; robusta y eficaz. Para una guía más profunda sobre las posibilidades de esta configuración, la &lt;a href=&#34;https://varnish-cache.org/docs/trunk/users-guide/vcl-grace.html&#34;&gt;documentación oficial de Varnish&lt;/a&gt; es un recurso excelente y de alta reputación.&#xA;&lt;h3&gt;Ventajas Reales del Varnish Cache Grace Mode&lt;/h3&gt;&#xA;Implementar esta funcionalidad no es solo un truco técnico, tiene beneficios directos para tu negocio y tu tranquilidad:&#xA;&lt;ul&gt;&#xA; &#x9;&lt;li&gt;&lt;strong&gt;Alta Disponibilidad Real:&lt;/strong&gt; Tu web permanece online y funcional para la mayoría de los usuarios incluso durante una caída total del backend.&lt;/li&gt;&#xA; &#x9;&lt;li&gt;&lt;strong&gt;Experiencia de Usuario (UX) Intacta:&lt;/strong&gt; El visitante ni se entera del drama que está ocurriendo en la sala de máquinas. Evitas la frustración y el abandono que provocan las páginas de error.&lt;/li&gt;&#xA; &#x9;&lt;li&gt;&lt;strong&gt;Protección Contra Picos de Tráfico:&lt;/strong&gt; Si un pico de tráfico tumba tu servidor, Varnish aguantará el chaparrón sirviendo contenido desde la gracia, dándote margen para escalar tus recursos.&lt;/li&gt;&#xA; &#x9;&lt;li&gt;&lt;strong&gt;Mantenimientos sin Estrés:&lt;/strong&gt; ¿Necesitas reiniciar el servidor o aplicar un parche? Puedes hacerlo con la tranquilidad de que Varnish mantendrá la web a flote sirviendo contenido antiguo durante esos minutos.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3&gt;Consideraciones y Buenas Prácticas&lt;/h3&gt;&#xA;Aunque el &lt;strong&gt;varnish-cache-grace&lt;/strong&gt; es increíblemente útil, no es una bala de plata. Hay que usarlo con cabeza:&#xA;&lt;ul&gt;&#xA; &#x9;&lt;li&gt;&lt;strong&gt;No para todo el contenido:&lt;/strong&gt; No lo uses en contenido extremadamente dinámico y sensible al tiempo. Por ejemplo, el stock de un producto, resultados de apuestas en directo o el carrito de la compra. Para esas secciones, puedes crear excepciones en tu VCL para que no usen el periodo de gracia.&lt;/li&gt;&#xA; &#x9;&lt;li&gt;&lt;strong&gt;Elige un &lt;code&gt;beresp.grace&lt;/code&gt; razonable:&lt;/strong&gt; ¿Cuánto tiempo es aceptable que tu contenido esté desactualizado? Para un blog, 24 horas podría estar bien. Para una tienda online, quizá no más de 1 o 2 horas. Analiza tu caso de uso.&lt;/li&gt;&#xA; &#x9;&lt;li&gt;&lt;strong&gt;Monitoriza, siempre:&lt;/strong&gt; Que tengas una red de seguridad no significa que puedas olvidarte del trapecista. Grace Mode te da tiempo, pero sigues necesitando un buen sistema de monitorización que te alerte cuando el backend falle para que puedas solucionarlo cuanto antes.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;En definitiva, &lt;code&gt;beresp.grace&lt;/code&gt; es una de las funcionalidades más potentes y, a menudo, infrautilizadas de Varnish Cache. Te proporciona una red de seguridad robusta que transforma una posible catástrofe en un simple incidente técnico invisible para tus usuarios.&#xA;&#xA;Así que, la próxima vez que pienses en la estabilidad de tu web, no te limites a cruzar los dedos. Dale a Varnish la capacidad de ser el héroe silencioso que tu proyecto necesita. Implementa el &lt;strong&gt;varnish-cache-grace&lt;/strong&gt; y duerme un poco más tranquilo.&#xA;&#xA;&lt;small&gt;Este articulo puede contener enlaces de afiliación&lt;/small&gt;&#xA;&lt;h2&gt;Preguntas Frecuentes&lt;/h2&gt;&#xA;&lt;div class=&#34;faq-container&#34;&gt;&#xA;&lt;div class=&#34;faq-item&#34;&gt;&#xA;&lt;p class=&#34;faq-question&#34;&gt;&lt;strong&gt;Q: He entendido que el Grace Mode es muy útil, pero ¿hay algún tipo de contenido o página donde NO debería activarlo?&lt;/strong&gt;&lt;/p&gt;</description>
			</item>
			<item>
				<title>Visualizar cabeceras HTTP de un servidor remoto</title>
				<link>https://javierin.com/visualizar-cabeceras-http-de-un-servidor-remoto/</link>
				<pubDate>Sat, 08 Jun 2013 13:11:16 +0000</pubDate>
				<guid>https://javierin.com/visualizar-cabeceras-http-de-un-servidor-remoto/</guid>
				<description>&lt;p&gt;Hoy me ha llamado un amigo preguntándome como saber si una petición que estaba haciendo a un &lt;a href=&#34;https://www.amazon.es/dp/B0CJQG8CWJ?tag=javierin-21&amp;linkCode=osi&amp;th=1&amp;psc=1&#34; target=&#34;_blank&#34; rel=&#34;nofollow sponsored&#34;&gt;servidor&lt;/a&gt; era correcta o no.&lt;/p&gt;&#xA;&lt;p&gt;Lo primero en lo que pensé fue en usar curl, pero luego me quedé pensando en otras formas de hacerlo, desde wget hasta netcat. Sin ir a opciones raras, aquí van 3 formas de obtener las cabeceras HTTP de respuesta:&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Mirar cabeceras HTTP con Curl&lt;/strong&gt; (La primera porque es la que suelo usar) Incluyo la opción de seguir las redirecciones indicadas por el servidor.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Varnish Cache 2.1.5 en Ubuntu Server</title>
				<link>https://javierin.com/varnish-cache-2-1-5-en-ubuntu-server/</link>
				<pubDate>Wed, 13 Apr 2011 13:32:46 +0000</pubDate>
				<guid>https://javierin.com/varnish-cache-2-1-5-en-ubuntu-server/</guid>
				<description>&lt;p&gt;Para instalar Varnish Cache en &lt;a href=&#34;https://www.amazon.es/dp/B0BZVCMMT7?tag=javierin-21&amp;linkCode=osi&amp;th=1&amp;psc=1&#34; target=&#34;_blank&#34; rel=&#34;nofollow sponsored&#34;&gt;tu servidor ubuntu&lt;/a&gt;, puedes instalarlo directamente usando apt-get install varnish, pero es posible que no esté disponible la versión más moderna. Si quieres usar los repositorios de Varnish en vez de los de ubuntu, sigue esta guía.&lt;/p&gt;&#xA;&lt;p&gt;Tener instalado el paquete curl. Si no lo tienes, deberas instalarlo tambien&lt;/p&gt;&#xA;&lt;pre&gt;curl http://repo.varnish-cache.org/debian/GPG-key.txt | apt-key add -&lt;/pre&gt;&#xA;&lt;p&gt;Añadir esta linea al final de tu /etc/apt/sources.list (Varnish solo da repositorios para versiones LTS de Ubuntu, pero están actualizadas.)&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
