Cuál usar: Expire Header, Last Modified Header o ETags


Estoy ejecutando PHP en Apache, y estoy confundido acerca de cómo implementar el almacenamiento en caché del lado del servidor, con el fin de hacer que el sitio se cargue más rápido.

¿Cuál es la diferencia entre la Expires, Last-Modified y ETag encabezados, y cuál se debe utilizar en qué situación?

Author: dayuloli, 2011-03-16

2 answers

Puede usar el encabezado Expires en conjunción, pero independientemente de los otros dos. Es universalmente compatible con proxies y cachés del navegador.

La diferencia entre ETag y Last-Modified sellos es más semántica. Los ETAGS son opacos para los clientes. Normalmente es una suma de comprobación. Mientras que un encabezado Modificado por última vez 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, entonces una amplia gama de marcas de tiempo en el pasado puede coincidir con tal condición. Si sus páginas cambian con frecuencia, entonces una marca de tiempo Modificada por última vez podría ser ventajosa.

El enfoque ETag, por otro lado, conduce a clientes que guardan una última huella digital por recurso. (No estoy seguro de si las cachés del navegador recuerdan varios ETags). En las solicitudes, solo se enumeran uno o algunos tokens posibles If-None-Match. Esto podría significar más fallos. Además, debe comparar varias sumas de verificación, mientras que con una marca de tiempo Modificada por última vez podría tener una aritmética comparación.

La verdadera ventaja de los ETags es que puede comparar huellas dactilares de forma fiable. Las marcas de tiempo modificadas por última vez son un poco más vagas, ya que no verifican si el contenido real de la página cambió.

Véase también:

 22
Author: mario,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-09-08 03:05:50

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

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

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

Si tiene que hacer 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á el contenido de su caché.

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

 33
Author: hienbt88,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-08-23 15:40:34