J'ai lu sur l'en- tête Pragma sur Wikipedia qui dit:
"Le champ d'en-tête Pragma: no-cache est un en-tête HTTP / 1.0 destiné à être utilisé dans les requêtes. C'est un moyen pour le navigateur d'indiquer au serveur et aux caches intermédiaires qu'il souhaite une nouvelle version de la ressource, pas pour le serveur pour dire au navigateur de ne pas mettre en cache la ressource. Certains agents utilisateurs font attention à cet en-tête dans les réponses, mais la RFC HTTP / 1.1 met en garde spécifiquement contre l'utilisation de ce comportement. "
Mais je n'ai pas compris ce que ça fait? Quelle est la différence entre l'en- Cache-Control
tête dont la valeur est no-cache
et Pragma
dont la valeur est également no-cache
?
la source
Pragma: no-cache
est destiné à être utilisé uniquement dans les requêtes (ce qui signifie «Je veux l'original, pas une copie en cache») et son comportement n'est pas spécifié pour les réponses.Cache-Control: no-cache
a la même signification pour les requêtes mais est en fait également définie pour les réponses, ce qui signifie "Si vous souhaitez utiliser une copie en cache de ceci à l'avenir, vous devez d'abord vérifier avec moi qu'elle est à jour (c'est-à-dire effectuer une revalidation)".max-age
ce qui n'empêche pas la mise en cache. Il fixe juste une date d'expiration pour cela ...Il n'y a pas de différence, sauf que cela
Pragma
n'est défini que comme applicable aux demandes du client, alors qu'ilCache-Control
peut être utilisé à la fois par les demandes des clients et les réponses des serveurs.Ainsi, en ce qui concerne les normes, elles ne peuvent être comparées que du point de vue du client faisant une demande et du serveur recevant une demande du client. Le http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.32 définit le scénario comme suit:
La façon dont je lirais ce qui précède:
si vous écrivez un client et avez besoin
no-cache
:Pragma: no-cache
dans vos requêtes, car vous ne savez peut-être pas siCache-Control
est pris en charge par le serveur;Cache-Control
si vous écrivez un serveur:
Cache-Control
; s'il n'est pas trouvé, vérifiezPragma: no-cache
et exécutez laCache-Control: no-cache
logique;Cache-Control
.Bien sûr, la réalité peut être différente de ce qui est écrit ou implicite dans la RFC!
la source
Cache-Control: max-age=86400
etPragma: no-cache
? Lequel sera alors honoré par les navigateurs modernes?Pragma: no-cache
n'est défini que pour les demandes du navigateur, et il serait donc entièrement invalide et indéfini dans les réponses du serveur au navigateur, par exemple, j'imagine que chaque navigateur (qu'il soit moderne ou not) devrait ignorer un tel en-tête dans toute réponse qu'il pourrait recevoir.Si c'est après 1999 et que vous utilisez toujours Expires ou Pragma , vous le faites mal.
Je vous regarde Stackoverflow:
tl; dr:
Pragma
est un héritage de HTTP / 1.0 et n'est plus nécessaire depuis Internet Explorer 5 ou Netscape 4.7. Sauf si vous vous attendez à ce que certains de vos utilisateurs utilisent IE5: il est prudent de cesser de l'utiliser.[date]
(obsolète - HTTP 1.0)[seconds]
Et les requêtes conditionnelles:
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
Dernière modification: Jeu 09 mai 2019 19:15:47 GMT
la source
Pragma
. (Dans HTTP / 1.0, Pragma était défini comme un champ extensible pour les directives d'implémentation spécifiées pour les destinataires. Cette spécification désapprouve ces extensions pour améliorer l'interopérabilité.)