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?
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:
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.
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