Leí sobre el encabezado de Pragma en Wikipedia que dice:
"El campo de encabezado Pragma: no-cache es un encabezado HTTP / 1.0 destinado a usarse en solicitudes. Es un medio para que el navegador le diga al servidor y a cualquier caché intermedia que quiere una versión nueva del recurso, no para el servidor para decirle al navegador que no almacene en caché el recurso. Algunos agentes de usuario prestan atención a este encabezado en las respuestas, pero el RFC HTTP / 1.1 advierte específicamente contra confiar en este comportamiento ".
¿Pero no he entendido lo que hace? ¿Cuál es la diferencia entre el Cache-Control
encabezado cuyo valor es no-cache
y Pragma
cuyo valor también es no-cache
?
fuente
Pragma: no-cache
está destinado a usarse solo en solicitudes (que significa "Quiero el original, no una copia en caché") y su comportamiento no se especifica para las respuestas.Cache-Control: no-cache
tiene el mismo significado para las solicitudes, pero en realidad también se define para las respuestas, lo que significa "Si desea utilizar una copia en caché de esto en el futuro, primero debe verificar conmigo que está actualizado (es decir, realizar la revalidación)".max-age
que no impide el almacenamiento en caché. Simplemente establece una fecha de vencimiento para ella ...No hay diferencia, excepto que
Pragma
solo se define como aplicable a las solicitudes del cliente, mientras queCache-Control
puede ser utilizado tanto por las solicitudes de los clientes como por las respuestas de los servidores.Por lo tanto, en lo que respecta a los estándares, solo se pueden comparar desde la perspectiva del cliente que realiza una solicitud y el servidor recibe una solicitud del cliente. El http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.32 define el escenario de la siguiente manera:
La forma en que leería lo anterior:
si estás escribiendo un cliente y necesitas
no-cache
:Pragma: no-cache
en sus solicitudes, ya que es posible que no sepa siCache-Control
es compatible con el servidor;Cache-Control
si estás escribiendo un servidor:
Cache-Control
; si no se encuentra, verifiquePragma: no-cache
y ejecute laCache-Control: no-cache
lógica;Cache-Control
.¡Por supuesto, la realidad puede ser diferente de lo que está escrito o implícito en el RFC!
fuente
Cache-Control: max-age=86400
yPragma: no-cache
? ¿Cuál será honrado por los navegadores modernos?Pragma: no-cache
solo se define para las solicitudes del navegador, por lo que sería completamente inválido e indefinido en las respuestas del servidor al navegador, por ejemplo, me imagino que cada navegador (ya sea moderno o no) debe ignorar dicho encabezado en cualquier respuesta que pueda recibir.Si es después de 1999, y todavía estás usando Expires o Pragma , lo estás haciendo mal.
Te estoy mirando Stackoverflow:
tl; dr:
Pragma
es un legado de HTTP / 1.0 y no se ha necesitado desde Internet Explorer 5 o Netscape 4.7. A menos que espere que algunos de sus usuarios usen IE5: es seguro dejar de usarlo.[date]
(en desuso - HTTP 1.0)[seconds]
Y las solicitudes condicionales:
Etag: W/“1d2e7–1648e509289”
If-None-Match: W/“1d2e7–1648e509289”
304 Not Modified
last-modified: Thu, 09 May 2019 19:15:47 GMT
If-Modified-Since: Fri, 13 Jul 2018 10:49:23 GMT
304 Not Modified
última modificación: jue, 09 de mayo de 2019 19:15:47 GMT
fuente
Pragma
en absoluto. (En HTTP / 1.0, Pragma se definió como un campo extensible para directivas de implementación especificadas para destinatarios. Esta especificación desprecia esas extensiones para mejorar la interoperabilidad.)