2011-09-10 18 views
10

? Cuáles son los valores válidos para el encabezado HTTP pragma. Sé que no-cache es uno pero quiero habilitar el almacenamiento en caché, entonces, ¿qué debo configurar? Hice algo de googleing y todo lo que obtuve fue que la mayoría de los clientes ignoran esto, pero no hay información sobre otros valores que acepte.¿Cuáles son los valores válidos para http Pragma

Respuesta

11

Sorprendentemente, solo hay un parámetro definido por defecto, que es no-cache y no se definirán nuevas directivas Pragma en HTTP según RFC.

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

Por otra parte, tendrá que utilizar el Cache-Control cabecera para la gestión de los comportamientos de almacenamiento en caché en lugar de la directiva Pragma que parece estar siendo incluido sólo para apoyar el HTTP legado/1.0.

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

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

+0

gracias por el enlace extra – aWebDeveloper

3

probablemente usted está buscando Cache-Control, esto es compatible con HTTP/1.1 y define más estados que Pragma.

1

Algo más de información, que podría ayudar a algunas personas que están menos interesadas en el almacenamiento en caché, y más interesados ​​en los encabezados http en general. es decir, la interpretación literal de la pregunta original, "¿cuáles son los valores válidos para el http pragma del encabezado"?

La referencia en la respuesta aceptada (https://stackoverflow.com/a/7376516/3246928) es el RFC http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.32. Se define el snytax como:

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

pragma-directivo = "no-cache" | extensión-pragma

extensión-pragma = contador [ "=" (token | cita de cadena)]

Este implica que cualquier '= valor de token' par es aceptable (con el valor siendo opcional) La especificación continúa diciendo

No se definirán nuevas directivas Pragma en HTTP.

y me adivinar esto también está destinado a cubrir la parte de "extensión-pragma", pero me gustaría que habían sido más inequívoca aquí.

Este encabezado no no parece estar creado específicamente para el almacenamiento en caché; la descripción en el RFC dice:

El campo de encabezado Pragma en general se utiliza para incluir implementación- directivas específicas que podrían aplicarse a cualquier destinatario a lo largo de la cadena petición/respuesta

Por lo tanto, en teoría, podría agregar cosas aquí, y podrían funcionar. Sin embargo, a pesar de muchas búsquedas, no he encontrado ninguna referencia a ningún otro valor que alguna vez se haya utilizado aquí. En realidad, es una parte muerta y embarazosa de http/1.

Parece que lo normal es que ver:

  • Utilice únicamente pragma con la bandera no-cache. Este es el único valor que cualquiera debería usar. (Y, por supuesto, también debe usar el encabezado de control de caché para que el almacenamiento en caché se comporte como se esperaba).

  • Si desea incluir información especial en un encabezado http, es decir, si desea "incluir directivas específicas de implementación que puedan aplicarse a cualquier destinatario a lo largo de la cadena de solicitud/respuesta", cree un encabezado http personalizado. Google y Amazon, por ejemplo, hacen esto: http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingMetadata.html y https://cloud.google.com/storage/docs/reference-headers
    Tenga en cuenta la convención de nomenclatura en el encabezado http. El prefijo "x-" está obsoleto por http://tools.ietf.org/html/rfc6648, pero todos parecen usarlo de todos modos.

Cuestiones relacionadas