2011-09-10 15 views
10

Quali sono i valori validi per l'intestazione http pragma. So che lo no-cache è uno ma voglio attivare la memorizzazione nella cache, quindi cosa dovrei impostarlo. Ho fatto un po 'di googleing e tutto ciò che ho ottenuto è che la maggior parte dei client lo ignora, ma nessuna informazione su altri valori accetta.Quali sono i valori validi per http Pragma

risposta

11

Sorprendentemente esiste un solo parametro definito per impostazione predefinita, ovvero no-cache e non verranno definite nuove direttive Pragma in HTTP come da RFC.

ref: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.32

Inoltre, è necessario utilizzare il Cache-Control intestazione per gestire i comportamenti di caching piuttosto che la direttiva Pragma che sembra essere ancora incluso solo per supportare il HTTP legacy/1.0.

ref: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9

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

+0

grazie per il collegamento bonus – aWebDeveloper

3

Probabilmente siete alla ricerca di Cache-Control, questo è supportato in HTTP/1.1 e definisce più stati di Pragma.

1

Altre informazioni, che potrebbero aiutare alcune persone meno interessate al caching e più interessate alle intestazioni http in generale. l'interpretazione letterale della domanda originale, "quali sono i valori validi per il pragma dell'intestazione http"?

Il riferimento nella risposta accettata (https://stackoverflow.com/a/7376516/3246928) è la RFC http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.32. Definisce la snytax come:

Pragma = "Pragma" ":" 1 # pragma-direttiva

pragma-direttiva = "no-cache" | Estensione-Pragma

estensione-Pragma = token [ "=" (Token | quoted-string)]

Questo implica che qualsiasi coppia '= valore simbolico' è accettabile (con il valore è facoltativo). La specifica continua a dire

Nessuna nuova direttiva Pragma verrà definita in HTTP.

e vorrei immagino questo è destinato anche a coprire la parte "estensione-pragma", ma vorrei che fossero stati più inequivocabile qui.

Questa intestazione fa non sembra essere stata creata appositamente per il caching; la descrizione nel RFC dice:

Il campo generale-intestazione Pragma viene utilizzato per includere attuative di direttive specifiche che potrebbero essere applicate a qualsiasi destinatario lungo la catena richiesta/risposta

Così, in teoria, potresti aggiungere le cose qui e potrebbero funzionare. Tuttavia, nonostante molte ricerche, non ho trovato alcun riferimento a nessun altro valore mai usato qui. È effettivamente una parte morta e imbarazzante di http/1.

Sembra che la cosa normale da fare è:

  • Utilizzare solo pragma con la bandiera no-cache. Questo è l'unico valore che chiunque dovrebbe mai usare. (E ovviamente dovresti usare anche l'intestazione di controllo della cache per far sì che il tuo caching si comporti come previsto).

  • Se si desidera inserire alcune informazioni speciali in un'intestazione http, ad esempio se si desidera "includere direttive specifiche dell'implementazione applicabili a qualsiasi destinatario lungo la catena di richiesta/risposta", creare un'intestazione http personalizzata. Google e Amazon, ad esempio, eseguono questa operazione: http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html e https://cloud.google.com/storage/docs/reference-headers
    Nota la convenzione di denominazione nell'intestazione http. Il prefisso "x-" è deprecato , ma tutti sembrano usarlo in ogni caso.

Problemi correlati