proceso de almacenamiento en caché http
Nota: el caché http solo puede almacenar en caché los recursos solicitados mediante el método get
El caché se refiere a la copia de los recursos guardados en el servidor proxy o en el disco local del cliente. El uso del almacenamiento en caché reduce el acceso al servidor de origen, lo que ahorra tráfico y tiempo de comunicación.
Un servidor de caché es un tipo de servidor proxy y se clasifica en el tipo de proxy de caché. En otras palabras, cuando el proxy reenvía la respuesta del servidor, el servidor proxy guardará una copia del recurso.
La ventaja de los servidores de almacenamiento en caché es que el almacenamiento en caché evita el reenvío de recursos varias veces desde el servidor de origen. Por lo tanto, el cliente puede obtener recursos del servidor de caché más cercano y el servidor de origen no tiene que procesar la misma solicitud varias veces.
El almacenamiento en caché del navegador se divide en almacenamiento en caché forzado y almacenamiento en caché negociado. Los campos utilizados respectivamente son Expires y Cach-control para el primero, y Etag y Last-modified para el segundo.
Expires (http/1.0): establece el tiempo de vencimiento (tiempo absoluto) del recurso. El navegador determina si la solicitud excede esta fecha. De lo contrario, lee directamente el valor almacenado en caché. enviar solicitudes al servidor.
Pragma: cuando el valor del campo es "no-cache", se notificará al cliente que no lea el caché del recurso, es decir, debe enviar una solicitud al servidor cada vez. Sin embargo, este método para deshabilitar el almacenamiento en caché no es muy efectivo: 1. Solo IE puede reconocer el significado de esta metaetiqueta, y otros navegadores convencionales solo pueden reconocer la metaetiqueta "Cache-Control: no-store". 2. Si el significado de la metaetiqueta se reconoce en IE, no necesariamente agregará Pragma al campo de solicitud, pero sí hará que la página actual envíe una nueva solicitud cada vez, pero solo para la página y los recursos. en la página no se verá afectada.
Si Pragma y Expires aparecen juntos, la prioridad de Pragma es alta.
Cach-Control (http/1.1): Ejemplo de control de caché:
Cache-Control tiene tres propiedades: capacidad de almacenamiento en búfer, tiempo de caducidad y verificación en dos pasos.
Capacidad de almacenamiento en búfer:
Tiempo de caducidad:
Verificación secundaria:
La caducidad utiliza la hora del servidor y puede ocurrir la hora del cliente. no está sincronizado con la hora del servidor, lo que hace que el caché local sea inútil o no pueda caducar.
Max-Age utiliza el cálculo de la hora local del cliente, por lo que se recomienda este problema.
Si Cache-Control y Pragma están habilitados al mismo tiempo, caduca, Cache-Control tiene mayor prioridad.
Última modificación / Si se modificó desde (http/1.0): determina la hora de la última modificación del recurso. Mientras esta fecha cambie, el caché no se utilizará. El encabezado del navegador es If-Modified-Since y el encabezado del servidor es Last-Modified. Si los dos coinciden, significa que el recurso del servidor no ha cambiado. El servidor no devolverá la entidad del recurso, solo devolverá el encabezado para notificar. el navegador para utilizar el caché.
Desventajas: algunos archivos pueden cambiar las fechas periódicamente, pero el contenido en realidad no cambia, pero este campo solo determina la hora de la última modificación,
E-tag/If-None-Match (http/1.1): Etag es un identificador único generado por el servidor para el archivo de recursos solicitado. Mientras el contenido del archivo no cambie, el valor de Etag permanece sin cambios, superando las deficiencias de Last-Modified/If-Modified-Since. . El encabezado del navegador es If-None-Match y el encabezado del servidor es E-tag. Si los dos coinciden, significa que el contenido no ha cambiado y se notifica al navegador que use el caché.
Desventajas de Etag: No apto para sistemas distribuidos porque el valor de Etag es diferente en cada servidor.
Si hay tanto E-tag como Last-Modified, el servidor verificará E-tag primero.