10
votes

Quelles sont les valeurs valides pour http pragma

Quelles sont les valeurs valides pour HTTP Header pragma . Je sais no-cache est un mais je wnat pour activer la mise en cache alors que dois-je le définir. J'ai fait des googles et tout ce que j'ai eu si la plupart des clients ignorent cela, mais aucune information sur d'autres valeurs qu'elle accepte.


0 commentaires

3 Réponses :


11
votes

surprenant, il n'y a qu'un seul paramètre défini par défaut, qui est no-cache et aucune nouvelle directive pragma ne sera définie dans HTTP selon RFC.

ref: http://www.w3.org/protocols/rfc2616/rfc2616 -Sec14.html # SEC14.32

De plus, vous devrez utiliser l'en-tête CACHE-CONTRÔLER pour gérer les comportements de mise en cache plutôt que la directive pragma qui semble toujours être incluse uniquement pour prendre en charge l'héritage HTTP / 1.0.

ref: http://www.w3.org/protocols/rfc2616/rfc2616 -Sec14.html # SEC14.9

Bonus: http://www.mnot.net/cache_docs/


0 commentaires


1
votes

Quelques informations supplémentaires, cela pourrait aider certaines personnes moins intéressées à la mise en cache et plus intéressée par les en-têtes HTTP en général. I.e l'interprétation littérale de la question initiale "Quelles sont les valeurs valides pour le HTTP Header Pragma"?

La référence dans la réponse acceptée ( https://stackoverflow.com/a/7376516/3246928 ) est le Rfc http://www.w3.org/protocols/rfc2616 /rfc2616-sec14.html#sec14.32 . Il définit le snytax comme:

pragma = "pragma" ":" 1 # pragma-directive

pragma-directive = "no-cache" | Extension-Pragma

Extension-pragma = jeton ["=" (jeton | cordé)]

Ceci implique que toute paire "jeton = valeur" est acceptable (avec la valeur en option). La spécification continue à dire

Aucune nouvelle directive pragma ne sera définie dans HTTP.

Et je voudrais devinez ceci est également destiné à couvrir la partie "extension-pragma", mais j'aimerais avoir été plus sans ambiguïté ici.

Cet en-tête pas semble être spécifiquement créé pour la mise en cache; La description dans la RFC dit:

Le champ d'en-tête General Pragma est utilisé pour inclure la mise en œuvre- directives spécifiques qui pourraient s'appliquer à tout bénéficiaire le long de la Chaîne de demande / réponse

Donc, en théorie, vous pouvez ajouter des choses ici, et ils pourraient travailler. Cependant, malgré de nombreuses recherches, je n'ai trouvé aucune référence à aucune autre valeur jamais utilisée ici. C'est effectivement une partie morte et embarrassante de http / 1.

Il semble que la chose normale à faire est:

  • Utilisez uniquement de pragma avec le drapeau sans cache. C'est la seule valeur que quiconque devrait jamais utiliser. (Et bien sûr, vous devez également utiliser l'en-tête de contrôle du cache pour votre mise en cache pour vous comporter comme prévu).

  • Si vous souhaitez mettre des informations spéciales dans une en-tête HTTP - c'est-à-dire si vous souhaitez "inclure des directives spécifiques à la mise en œuvre pouvant s'appliquer à n'importe quel destinataire le long de la chaîne de demande / réponse", puis créez une en-tête HTTP personnalisée . Google et Amazon, par exemple, faites ceci: http://docs.aws.amazon.com/amazons3/Latest/ dev / à utilisermetadata.html et https://cloud.google.com/storage/docs/reference-headers
    Notez la convention de dénomination sur l'en-tête HTTP. Le préfixe "x-" est obsolète par http://tools.ietf.org/html/rfc6648 , mais tout le monde semble utiliser ce de toute façon.


0 commentaires