2010-06-25 16 views
9

¿Cuál es la forma correcta de establecer el control de caché?Google App Engine: encabezados [] y headers.add_header() para control de caché

A veces veo el uso de encabezados []

self.response.headers["Pragma"]="no-cache" 
self.response.headers["Cache-Control"]="no-cache, no-store, must-revalidate, pre-check=0, post-check=0" 
self.response.headers["Expires"]="Thu, 01 Dec 1994 16:00:00" 

Otras veces, veo headers.add_header()

self.response.headers.add_header("Pragma","no-cache") 
self.response.headers.add_header("Cache-Control","no-cache, no-store, must-revalidate, pre-check=0, post-check=0") 
self.response.headers.add_header("Expires","Thu, 01 Dec 1994 16:00:00") 

E incluso una combinación de ambas cabeceras [] y headers.add_header()

self.response.headers["Pragma"]="no-cache" 
self.response.headers.add_header("Cache-Control","no-cache, no-store, must-revalidate, pre-check=0, post-check=0") 
self.response.headers.add_header("Expires","Thu, 01 Dec 1994 16:00:00") 

Respuesta

10

La diferencia es que el uso de headers[] sobrescribirá valores anteriores, mientras que add_header no lo hará.

De los wsgiref.headers docs (mencionada por el GAE docs), "Establecimiento de una cabecera se borran todos los valores existentes para ese encabezado, a continuación, añade un nuevo valor al final de la lista de encabezados envuelta."

+2

Para establecer el control de caché, simplemente use 'headers []' ya que estos encabezados son de un solo valor (no quiere que aparezcan múltiples encabezados 'Pragma', por ejemplo). –