188 votes

Différence entre Pragma et-tête Cache-control?

J'ai lu sur Pragma - tête sur Wikipédia qui dit: "Le Pragma: no-cache de champ d'en-tête est un HTTP/1.0-tête destiné à utiliser dans les demandes. C'est un moyen pour le navigateur à dire le serveur et tous les caches intermédiaires qu'il veut une nouvelle version de la ressource, et non pour le serveur de dire au navigateur de ne pas mettre en cache les ressources. Certains agents utilisateurs ne prêter attention à cet en-tête dans les réponses, mais le HTTP/1.1 RFC spécifiquement met en garde contre compter sur ce comportement."

Mais je n'ai pas compris ce qu'il fait? Quelle est la différence entre le Cache-Contrôle d'en-tête dont la valeur est no-cache et Pragma dont la valeur est aussi no-cache?

220voto

Eric Brenden Points 1368

Pragma est HTTP/1.0 mise en œuvre et de contrôle du cache est HTTP/1.1 mise en œuvre d'un même concept. Ils sont destinés à prévenir le client de mise en cache de la réponse. Les anciens clients ne peuvent pas soutenir HTTP/1.1 qui est pourquoi cet en-tête est encore en usage.

103voto

cnst Points 1699

Il n'y a pas de différence, sauf qu' Pragma est défini comme applicable à la demande par le client, alors que Cache-Control peut être utilisé à la fois les demandes des clients et les réponses des serveurs.

Donc, tant que les normes, ils ne peuvent être comparés du point de vue du client qui effectue une demande et le serveur reçoit une demande du client. L' http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.32 définit le scénario comme suit:

HTTP/1.1 caches traiter "Pragma: no-cache", comme si le client avait envoyé des "Cache-Control: no-cache". Pas de nouvelles directives Pragma sera défini dans le protocole HTTP.

  Note: because the meaning of "Pragma: no-cache as a response
  header field is not actually specified, it does not provide a
  reliable replacement for "Cache-Control: no-cache" in a response

La façon dont je voudrais lire ci-dessus:

  • si vous êtes à la rédaction d'un client et la nécessité no-cache:

    • suffit d'utiliser Pragma: no-cache dans vos demandes, puisque vous ne pouvez pas savoir si Cache-Control est pris en charge par le serveur;
    • mais dans les réponses, à décider du cache, vérifiez Cache-Control
  • si vous êtes à la rédaction d'un serveur:

    • dans l'analyse des demandes des clients, de vérifier l' Cache-Control; dans le cas contraire, vérifiez Pragma: no-cache, et d'exécuter l' Cache-Control: no-cache logique;
    • dans les réponses, fournir des Cache-Control.

Bien sûr, la réalité pourrait être différente de ce qui est écrit ou implicite dans la RFC!

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X