Diferencia entre no-cache y must-revalidate

Desde el RFC 2616

http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9.1

no-caché

Si la directiva de no almacenar en caché no especifica un nombre de campo, entonces la memoria caché NO DEBE usar la respuesta para satisfacer una solicitud posterior sin una revalidación exitosa con el servidor de origen. Esto permite que un servidor de origen evite el almacenamiento en caché incluso por los cachés que se han configurado para devolver respuestas obsoletas a las solicitudes de los clientes.

Así se dirige a los agentes a revalidar.todos respuestas

Comparado esto con

debe revalidar

Cuando la directiva must-revalidate está presente en una respuesta recibida por un caché, ese caché NO DEBE usar la entrada después de que esté obsoleta para responder a una solicitud posterior sin antes revalidarla con el servidor de origen.

Así se dirige a los agentes a revalidar.duro respuestas

Particularmente con respecto ano-cache¿Es así como los agentes de usuario realmente tratan empíricamente esta directiva?

Cuál es el punto deno-cache si haymust-revalidate ymax-age?

Ver este comentario:

http://palpapers.plynt.com/issues/2008Jul/cache-control-attributes/

no-caché

Aunque esta directiva suena como que está ordenando al navegador que no almacene en caché la página, hay una diferencia sutil. La directiva de "no caché", de acuerdo con la RFC, le dice al navegador que debe volver a validarse con el servidor antes de servir la página desde el caché. La revalidación es una técnica ordenada que permite que la aplicación conserve el ancho de banda. Si la página que el navegador ha guardado en la memoria caché no ha cambiado, el servidor simplemente señala que el navegador y la página se muestran desde la memoria caché. Por lo tanto, el navegador (en teoría, al menos), almacena la página en su caché, pero la muestra solo después de la revalidación con el servidor. En la práctica, IE y Firefox han comenzado a tratar la directiva de no almacenar en caché como si le indicara al navegador que ni siquiera almacene en caché la página. Comenzamos a observar este comportamiento hace aproximadamente un año. Sospechamos que este cambio fue provocado por el uso generalizado (e incorrecto) de esta directiva para evitar el almacenamiento en caché.

¿Alguien tiene algo más oficial sobre esto?

Actualizar

Los servidores deben usar la directiva de revalidación obligatoria solo si la no validación de una solicitud en la representación puede resultar en una operación incorrecta, como una transacción financiera no ejecutada en silencio.

Eso es algo que nunca me he tomado en serio hasta ahora. El RFC está diciendo que no se debe revalidar a la ligera. La cosa es que, con los servicios web, debe tener una visión negativa y asumir lo peor para sus aplicaciones de cliente desconocidas. Cualquier recurso obsoleto tiene el potencial de causar un problema.

Y algo más que acabo de considerar, sin Last-Modified o ETags, el navegador solo puede recuperar todo el recurso de nuevo. Sin embargo, con ETags, he observado que Chrome al menos parece revalidarse en cada solicitud. Lo que hace que estas dos directivas sean erróneas o, por lo menos, mal nombradas, ya que no se pueden volver a validar adecuadamente a menos que la solicitud también incluya otros encabezados que luego causen "siempre revalidar" de todos modos.

Solo quiero aclarar ese último punto. Con sólo configurarmust-revalidate pero sin incluir un ETag o Last-Modified, el agente solo puede volver a obtener el contenido ya que no tiene nada que enviar al servidor para comparar.

Sin embargo, mi prueba empírica ha demostrado que cuando se incluye ETag o datos de encabezado modificados en las respuestas, los agentes siempre se revalidan de todos modos, independientemente de la presencia demust-revalidate encabezamiento.

Así que el punto demust-revalidate es forzar un 'cache de bypass' cuando se desactiva, lo que solo puede suceder cuando se establece una vida / edad, por lo tanto simust-revalidate se establece en una respuesta sin edad u otros encabezados, efectivamente se convierte en equivalente ano-cache Ya que la respuesta será considerada inmediatamente pasada.

- ¡Así que finalmente voy a marcar la respuesta de Gili!

Respuestas a la pregunta(4)

Su respuesta a la pregunta