HTTP
navegador
rendimiento web
cache
carga rápida
optimización
La respuesta es clave para el rendimiento web: el navegador intenta no volver a descargar lo mismo dos veces. En su lugar, usa memoria caché para guardar archivos temporalmente y acelerar las siguientes visitas.
A veces, un ingrediente en la despensa ya está vencido (la caché expiró), así que hay que reemplazarlo por uno nuevo. Y si es la primera vez que va a cocinar ese plato, tendrá que conseguir todo desde cero.
El servidor le deja instrucciones especiales llamadas encabezados de caché, que funcionan como notas para el navegador:
Cache-Control: max-age=3600
→ “Guardalo por 1 hora”Expires: [fecha]
→ “Guardalo hasta esta fecha específica”ETag: [identificador]
→ “Si tenés dudas, preguntame si cambió”Aunque la caché es muy útil para acelerar la carga de los sitios, también puede causar confusión, especialmente cuando estás haciendo cambios durante el desarrollo de una página.
Por ejemplo:
Ctrl + F5
) para que el navegador descargue todo de nuevo.Como desarrollador o usuario, entender cómo funciona la caché te ayuda a diagnosticar errores, evitar confusiones y optimizar el rendimiento de cualquier sitio.
flowchart TD A[El navegador solicita un recurso] --> B[¿Está en caché?] B -- Sí --> C[¿Está vigente?] C -- Sí --> D[Usar versión guardada] C -- No --> E[Solicitar una nueva versión al servidor] B -- No --> E E --> F[Guardar nueva versión en caché] D --> G[Renderizar la página] F --> G
Código de estado 304 Not Modified: Esto significa que el navegador preguntó al servidor si el recurso había cambiado, y el servidor respondió que no, así que el navegador usó su copia local.
Indicadores como "from disk cache" o "from memory cache" en la columna Size o en los detalles de la solicitud: Esto indica que el navegador ni siquiera consultó al servidor porque ya tenía una copia válida en memoria o en disco.
Nota: En las DevTools de Chrome, podés agregar columnas como "Transferred" y "Size" para ver si un recurso se descargó realmente o vino desde caché.
1<link rel="stylesheet" href="styles.css?v=2"> 2<script src="app.js?version=20240427"></script>
Aquí, aunque el servidor esté sirviendo el mismo archivo styles.css
o app.js
, el navegador ve una URL diferente (styles.css?v=2
) y hace una nueva solicitud como si fuera otro recurso.
Esto es útil para:
Importante: Estos parámetros deben ser controlados estratégicamente: podés automatizarlos en el proceso de despliegue (build) para agregar un número de versión o hash cuando un archivo cambia.
Aquí algunos casos típicos que enfrentan los desarrolladores web:
Cambio en el CSS o en un archivo JS pero los usuarios ven la versión vieja: Solución: usar un query string de versión (?v=2
) o cambiar el nombre del archivo (styles_v2.css
).
Bug reportado donde "a mí se me ve roto pero a otro no": Puede ser que uno esté viendo la versión vieja en caché.
Solución: forzar recarga sin caché (Ctrl + F5
) o limpiar caché manualmente.
Analytics o scripts de terceros no se actualizan aunque cambiamos la integración:
Solución: agregar control de versiones en las URLs de esos scripts.
Cambiaste una imagen, pero los usuarios siguen viendo la anterior:
Solución: cambiar el nombre de la imagen (logo_v2.png
) o agregar un query string (logo.png?updated=1
).
Cambios menores en HTML no se reflejan en sitios con service workers (PWA):
Solución: invalidar cachés en el service worker y asegurarse de gestionar la actualización correctamente.