2011-03-16 10 views

Respuesta

19

Puede usar el encabezado Expires en conjunto, pero independientemente de los otros dos. Es universalmente compatible con proxies y cachés de navegador. La diferencia entre ETag y Last-Modified sellos es más semántica. ETags son opacos para los clientes. Por lo general, es una suma de comprobación. Mientras que un encabezado Last-Modified puede ser interpretado por los clientes. Se entiende que la última marca de tiempo modificada funciona linealmente.

Si un navegador solicita un recurso con If-Unmodified-Since, una amplia gama de marcas de tiempo en el pasado puede coincidir con dicha condición. Si sus páginas cambian frecuentemente, una marca de tiempo Last-Modified puede ser ventajosa.

El enfoque ETag, por otro lado, conduce a los clientes que guardan una última huella dactilar por recurso. (No estoy seguro si las memorias caché del navegador recuerdan múltiples ETags). En las solicitudes, solo se enumeran uno o algunos posibles If-None-Match tokens. Esto podría significar más errores. Además, tiene que comparar múltiples sumas de comprobación, mientras que con una marca de tiempo Last-Modified puede tener una comparación aritmética.

La ventaja real de ETags es que puede comparar las huellas dactilares de manera confiable. Las marcas de tiempo Last-Modified son un poco más vagas, ya que no verifican si el contenido real de la página ha cambiado.

Consulte también:

+0

así que básicamente deberíamos usar mod_expire sobre eTags? – Avinash

+0

En la mayoría de los casos: sí. – mario

+0

¿Cuándo deberíamos utilizar el último encabezado modificado? – Avinash

29

Expires y Cache-Control son "fuertes" cabeceras de caché

Last-Modified y ETag son "débiles" las cabeceras de caché

Primero, el navegador comprueba Expires/Cache-Control para determinar si se realiza o no una solicitud a los servidores.

Si tiene que realizar una solicitud, enviará Last-Modified/ETag en la solicitud HTTP. Si el valor Etag del documento coincide con eso, el servidor enviará un código 304 en lugar de 200 y ningún contenido. El navegador cargará los contenidos de su caché.

Recomiendo usar uno de los fuertes encabezados de almacenamiento en caché, junto con uno de los encabezados débiles de caché.

+0

¿Encuentras que algún documento admite el comportamiento de caché "fuerte y débil"? No pude encontrar uno, y el navegador de mi cliente ahora prioriza la última modificación que expira en realidad, lo cual no entiendo por qué. – GMsoF

+0

Validadores débiles y fuertes se describen en [RFC 2616] (https://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html#sec13.3.3) sección 13.3.3 – user2418306

+1

RFC 2616 dice "Las etiquetas de entidad son normalmente "validadores potentes", pero el protocolo proporciona un mecanismo para etiquetar una etiqueta de entidad como "débil". – cquezel

Cuestiones relacionadas