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-Controlencabezado cuyo valor es no-cachey Pragmacuyo valor también es no-cache?
fuente

Pragma: no-cacheestá 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-cachetiene 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-ageque no impide el almacenamiento en caché. Simplemente establece una fecha de vencimiento para ella ...No hay diferencia, excepto que
Pragmasolo se define como aplicable a las solicitudes del cliente, mientras queCache-Controlpuede 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-cacheen sus solicitudes, ya que es posible que no sepa siCache-Controles compatible con el servidor;Cache-Controlsi estás escribiendo un servidor:
Cache-Control; si no se encuentra, verifiquePragma: no-cachey ejecute laCache-Control: no-cacheló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=86400yPragma: no-cache? ¿Cuál será honrado por los navegadores modernos?Pragma: no-cachesolo 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:
Pragmaes 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 Modifiedlast-modified: Thu, 09 May 2019 19:15:47 GMTIf-Modified-Since: Fri, 13 Jul 2018 10:49:23 GMT304 Not Modifiedúltima modificación: jue, 09 de mayo de 2019 19:15:47 GMT
fuente
Pragmaen 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.)