Una descripción detallada de las opciones de almacenamiento en caché disponibles a través del protocolo HTTP
El almacenamiento en caché es una técnica que puede ayudar a que las conexiones de red sean más rápidas, porque cuanto menos cosas se necesiten transferir, mejor.
Muchos recursos pueden ser muy grandes y resultar muy costosos en términos de tiempo y también de costo real (en dispositivos móviles, por ejemplo) para recuperarlos.
Existen diferentes estrategias de almacenamiento en caché que están disponibles a través de HTTP y que utilizan los navegadores.
- Sin almacenamiento en caché
- El
Expires
encabezado - GET condicional
- Usando
If-Modified-Since
yLast-Modified
- Usando
If-None-Match
yETag
- Usando
Sin almacenamiento en caché
En primer lugar, el Cache-Control
encabezado puede indicarle al navegador que nunca use una versión en caché de un recurso sin verificar primero el valor ETag (más sobre esto más adelante), mediante el no-cache
valor:
Cache-Control: no-cache
Una no-store
opción más restrictiva le dice al navegador (y a todos los dispositivos de red intermediarios) que ni siquiera almacenen el recurso en su caché:
Cache-Control: no-store
Si Cache-Control
tiene el max-age
valor , se utiliza para determinar la cantidad de segundos que este recurso es válido como caché:
Cache-Control: max-age=3600
El Expiresencabezado
Cuando se envía una solicitud HTTP, el navegador verifica si tiene una copia de esa página en la memoria caché, según la URL solicitada.
Si lo hay, verifica que la página esté actualizada .
Una página está nueva si el valor del encabezado de respuesta HTTPExpires
es menor que la fecha y hora actual.
El encabezado Expires tiene este formato:
Expires: Sat, 01 Dec 2018 16:00:00 GMT
GET condicional
Existen distintas formas de realizar una obtención condicional. Todas se basan en el uso de los If-*
encabezados de solicitud:
- usando
If-Modified-Since
yLast-Modified
- usando
If-None-Match
yETag
Usando If-Modified-SinceyLast-Modified
El navegador puede enviar una solicitud al servidor y, en lugar de simplemente pedir la página, agrega un If-Modified-Since
encabezado , basado en el Last-Modified
valor del encabezado que obtuvo de la página almacenada en caché actualmente.
Esto le indica al servidor que solo devuelva un cuerpo de respuesta (el contenido de la página) si el recurso se ha actualizado desde esa fecha.
De lo contrario, el servidor devuelve una 304 Not Modified
respuesta.
Usando If-None-MatchyETag
El servidor web (dependiendo de la configuración, cómo se sirven las páginas, etc.) puede enviar un encabezado ETag .
Ese es el identificador de un recurso. Cada vez que el recurso cambia, por ejemplo, si se actualiza, la ETag también debería cambiar.
Es como una suma de comprobación.
El navegador envía un If-None-Match
encabezado que contiene uno (o más) valores ETag.
Si no hay coincidencia, el servidor devuelve la versión nueva del recurso; de lo contrario, una 304 Not Modified
respuesta.
Tal vez te puede interesar:
- Introducción a React
- Agregar evento de clic a los elementos DOM devueltos desde querySelectorAll
- Cómo cambiar el valor de un nodo DOM
- Cómo comprobar si un elemento DOM tiene una clase
Almacenamiento en caché en HTTP
Una descripción detallada de las opciones de almacenamiento en caché disponibles a través del protocolo HTTP
programar
es
2025-01-16
Si crees que alguno de los contenidos (texto, imagenes o multimedia) en esta página infringe tus derechos relativos a propiedad intelectual, marcas registradas o cualquier otro de tus derechos, por favor ponte en contacto con nosotros en el mail [email protected] y retiraremos este contenido inmediatamente