Introducción

Caching Headers Explained

Ver contenido

Headers de Caché HTTP: Por Qué el Caché del Navegador Es Esencial para el Rendimiento Web

Introducción

El caché HTTP permite a los navegadores almacenar copias de recursos localmente, eliminando la necesidad de descargarlos nuevamente en visitas posteriores. Un caché adecuado puede reducir los tiempos de carga de página en un 50-90% para visitantes recurrentes y disminuir significativamente la carga del servidor y costos de ancho de banda.

Entender cómo funcionan los headers de caché es esencial para entregar experiencias web rápidas y eficientes mientras se asegura que los usuarios siempre vean contenido actualizado cuando sea necesario.

Cómo Funciona el Caché del Navegador

Cuando un navegador solicita un recurso, los headers de respuesta del servidor le dicen al navegador si y cómo cachear ese recurso:

Flujo de Caché HTTP:
┌─────────────────────────────────────────────────────────────┐
│ Primera Visita:                                             │
│ 1. Navegador solicita: GET /styles.css                      │
│ 2. Servidor responde con recurso + headers de caché:        │
│    Cache-Control: max-age=31536000                          │
│    ETag: "abc123"                                           │
│ 3. Navegador almacena recurso en caché local                │
│                                                             │
│ Visitas Posteriores (dentro de max-age):                    │
│ 1. Navegador verifica caché local                           │
│ 2. Caché es fresco → Usa copia cacheada (¡sin red!)         │
│ 3. Página carga instantáneamente desde caché                │
│                                                             │
│ Después de que max-age expira:                              │
│ 1. Navegador envía solicitud condicional con ETag           │
│ 2. Servidor retorna 304 Not Modified (si no cambió)         │
│ 3. Navegador usa copia cacheada (ancho de banda mínimo)     │
└─────────────────────────────────────────────────────────────┘

Headers de Caché Principales

Cache-Control

El header principal para controlar el comportamiento del caché:

Directiva Significado Ejemplo de Uso
max-age=N Cachear por N segundos Assets estáticos
no-cache Debe revalidar antes de usar Páginas HTML
no-store Nunca cachear Datos sensibles
public Puede ser cacheado por CDNs Recursos estáticos
private Solo el navegador puede cachear Datos de usuario
immutable Nunca cambia (omitir revalidación) Assets versionados

ETag (Entity Tag)

Un identificador único para una versión específica de un recurso:

Respuesta del Servidor:
ETag: "33a64df5"

Solicitud de Revalidación del Navegador:
If-None-Match: "33a64df5"

Respuesta del Servidor (si no cambió):
304 Not Modified

Last-Modified

Validación basada en timestamp (más antigua que ETag pero aún útil):

Respuesta del Servidor:
Last-Modified: Wed, 15 Dec 2025 10:00:00 GMT

Solicitud de Revalidación del Navegador:
If-Modified-Since: Wed, 15 Dec 2025 10:00:00 GMT

Expires (Legacy)

Establece una fecha de expiración absoluta. Usa Cache-Control: max-age en su lugar cuando sea posible.

Estrategias de Caché por Tipo de Recurso

Diferentes recursos necesitan diferentes estrategias de caché:

Tipo de Recurso Política de Caché Recomendada Por Qué
HTML no-cache o max-age corto El contenido cambia frecuentemente
CSS/JS (versionados) max-age=31536000, immutable El nombre de archivo cambia al actualizar
Imágenes max-age=31536000 Raramente cambian
Fuentes max-age=31536000 Nunca cambian
Respuestas de API no-store o max-age corto Frescura de datos crítica

Assets Versionados vs No Versionados

Versionados (Recomendado):
├── styles.abc123.css  → max-age=1 año (immutable)
├── app.def456.js      → max-age=1 año (immutable)
└── Cuando el contenido cambia, el nombre de archivo cambia

No Versionados (Problemático):
├── styles.css         → max-age=? (riesgoso)
├── app.js             → max-age=? (riesgoso)
└── Los usuarios pueden obtener contenido obsoleto

Impacto en el Rendimiento

El caché adecuado mejora dramáticamente las métricas de rendimiento:

Métrica Primera Visita Visita Cacheada Mejora
Tiempo de Carga 3.2s 0.8s 75% más rápido
Datos Transferidos 2.1 MB 45 KB 98% menos
Solicitudes al Servidor 45 5 89% menos
TTFB 450ms 0ms* 100% eliminado

*Los recursos cacheados tienen TTFB cero ya que no se hace solicitud de red.

Problemas Comunes de Caché

Problema 1: Sin Headers de Caché

Problema: El servidor no envía headers de caché; el navegador usa heurísticas.

Solución: Siempre establecer explícitamente headers Cache-Control.

Problema 2: max-age Muy Corto

Problema: Assets estáticos cacheados solo por horas o días.

Solución: Usar 1 año (31536000 segundos) para assets estáticos versionados.

Problema 3: Cachear HTML

Problema: Páginas HTML cacheadas muy agresivamente; usuarios ven contenido obsoleto.

Solución: Usar no-cache para HTML para siempre revalidar.

Problema 4: Sin ETag/Last-Modified

Problema: El navegador no puede revalidar; debe re-descargar recursos expirados.

Solución: Configurar servidor para enviar ETags para revalidación eficiente.

Verificando Tus Headers de Caché

Usando DevTools del Navegador

  1. Abrir DevTools → pestaña Network
  2. Hacer clic en cualquier recurso
  3. Verificar Response Headers buscando:
    • Cache-Control
    • ETag o Last-Modified
    • Expires

Usando curl

curl -I https://ejemplo.com/styles.css

# Buscar:
# Cache-Control: max-age=31536000
# ETag: "abc123"

Usando Lighthouse

Ejecutar una auditoría de Lighthouse y verificar:

  • “Serve static assets with an efficient cache policy”
  • Muestra recursos con TTLs de caché cortos o faltantes

Artículos Relacionados

Aprende más sobre optimizar la entrega de recursos:

📚 Volver al Hub de Performance SEO - Explora todos los temas de rendimiento


Referencias

  1. MDN Web Docs - HTTP Caching
  2. web.dev - HTTP Cache
  3. Chrome Developers - Serve Static Assets with Efficient Cache Policy

Pruébalo Tú Mismo

¿Quieres verificar los headers de caché de tu sitio?

🔧 Descarga UXR SEO Analyzer (Gratis, análisis 100% local)


Disclaimer: Los analizadores en esta extensión son guías de referencia basadas en documentación oficial de MDN, web.dev y Chrome Developers. No representan verdades absolutas sobre cómo los motores de búsqueda evalúan tu contenido—solo los motores de búsqueda conocen sus algoritmos internos. Usa estas recomendaciones como punto de partida para mejorar tu sitio.

Última actualización: 15 de diciembre de 2025

Artículos relacionados

Versión relacionada

Guía detallada

Caching Headers Optimization Guide

El caché HTTP es una de las optimizaciones de rendimiento más poderosas disponibles

Hub de categoría

Hub

Performance Seo Hub

El rendimiento es un factor de ranking crítico e impacta directamente la experiencia del usuario

En la misma categoría

Guía detallada

Ttfb Optimization Guide

Time to First Byte (TTFB) es la base del rendimiento web—cada milisegundo de TTFB retrasa toda la carga de tu página

Introducción

Text Compression Explained

La compresión de texto es una de las formas más efectivas de reducir tamaños de archivo y mejorar los tiempos de carga de página

Introducción

Render Blocking Resources Explained

Los recursos que bloquean el renderizado son archivos que impiden que el navegador muestre contenido a los usuarios hasta que se descarguen y procesen...