2011-03-29 14 views
6

Desde el punto de vista del navegador,sin cabecera HTTP 'Last-Modified' -> ¿Sin embargo en caché?

¿Qué ocurre si un componente (imagen, escritura, hoja de estilo ...) se sirve sin un campo de encabezado HTTP Last-Modified ...

¿Es sin embargo en caché por el navegador, incluso si no podrá realizar una verificación de validez (If-Modified-Since) en el futuro, debido a su falta de información de fecha/hora?

Ej:

GET /foo.png HTTP/1.1 
Host: example.org 
-- 
200 OK 
Content-Type: image/png 

... 

Está foo.png sin embargo en caché?

-

sabría usted cualquier servicio en línea para servir a mi respuesta HTTP prima que puedo escribir a mí mismo con el fin de probar lo que estoy pidiendo?

Gracias.

+0

Esta pregunta era anterior a [esta presentación] (http://www.slideshare.net/abernier_/explstatic) Ahora comparto con usted. Gracias por tu ayuda. – abernier

Respuesta

4

, la imagen puede almacenarse en caché incluso sin un encabezado de respuesta Last-Modified.

El navegador guardará en caché la imagen hasta que expire su TTL. Puede configurar el tiempo de vida de la imagen usando los encabezados de respuesta apropiados, p. esto sería establecer el TTL hasta una hora:

Cache-Control: max-age=3600 
Date: Tue, 29 Mar 2011 20:18:17 GMT 
Expires: Tue, 29 Mar 2011 21:18:17 GMT 

Incluso sin ningún Last-Modified en la respuesta, el navegador puede seguir utilizando la cabecera Date para posteriores solicitudes If-Modified-Since.

+0

¿'Fecha' es obligatorio en el campo de encabezado HTTP? Quiero decir, si no se proporciona información de fecha/hora en la respuesta (en absoluto), ¿todavía está en la memoria caché y qué pasa con las solicitudes posteriores? gracias – abernier

+0

@abernier Sí, la imagen puede almacenarse en caché si especifica el TTL con 'max-age', incluso si' Date' y 'Last-Modified' están ausentes. 'Fecha' no es obligatorio. – Martin

+0

Gracias Martin: una última pregunta antes de aceptar tu respuesta: ¿conoces algún servicio web en el que pueda crear recursos pero con mi propia respuesta HTTP para poder probarlo efectivamente? – abernier

5

En general, las respuestas pueden almacenarse en caché a menos que indiquen explícitamente que no pueden (p. Ej., Con control de caché: sin almacenamiento).

Sin embargo, la mayoría de las memorias caché no almacenan las respuestas que no tienen algo en lo que puedan basar la frescura, por ejemplo, Cache-Control, Expira o Last-Modified.

Para las reglas completas, ver: http://tools.ietf.org/html/draft-ietf-httpbis-p6-cache-13#section-2.1

Ver: http://www.mnot.net/blog/2009/02/24/unintended_caching para un ejemplo de cómo esto puede sorprender a algunas personas.

+1

Thx, enlaces útiles - +1 – abernier

2

Desactivé el encabezado Last-Modified en un sitio grande y FF 13 no toma el contenido del caché, aunque se da un máximo de edad. El contenido sin un encabezado Last-Modified SIEMPRE obtiene un estado 200 ok cuando solicitado, no un 304. Entonces el navegador lo busca en el caché.

+0

Según la información proporcionada en la segunda mitad de su respuesta, ¿FF13 no debería haber recibido un HTTP200 y presentado las páginas de su sitio grande con el encabezado 'Last-Modified' eliminado, del caché? – user66001

Cuestiones relacionadas