¿Cómo evito que el navegador del cliente muestre su versión en caché para una página, de modo que siempre debe realizar un GET cuando el visitante visita la página?El navegador sigue renderizando su versión en caché. Quiero forzar siempre un GET
Estoy usando el decorador @never_cache de Django en la vista, que agrega "Cache-Control: max-age = 0" al encabezado HTTP GET. Sin embargo, cuando visito la página (en Google Chrome y Firefox, los únicos buscadores que he probado hasta ahora), la versión almacenada en caché se procesa de forma inevitable. (Confirmado por visitar la ficha Red para la solicitud, que informa "200 OK (de caché)".)
Si ahora hago clic en el botón Actualizar, va a proporcionar la fresca contenido del servidor (Red ficha de la petición dice "200 OK" y las cabeceras como se muestra a continuación)
En lugar de establecer. "Cache-control: max-age = 0" también traté de establecer el parámetro de cabecera HTTP "Expira" a ser una fecha en el pasado Esto no funcionó bien.
Request Method:GET
Status Code:200 OK
Request Headers
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Cache-Control:max-age=0
Connection:keep-alive
If-Modified-Since:Fri, 17 Feb 2012 15:25:21 GMT
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11
Response Headers
Cache-Control:max-age=0
Connection:keep-alive
Content-Encoding:gzip
Content-Type:text/html; charset=utf-8
Date:Fri, 17 Feb 2012 15:55:11 GMT
ETag:"[removed]"
Expires:Fri, 17 Feb 2012 15:55:11 GMT
Last-Modified:Fri, 17 Feb 2012 15:55:11 GMT
Server:nginx
Transfer-Encodindg:chunked
Vary:Cookie,Accept-Encoding
X-Handled-By:127.0.0.1:8000
¿Si se usa "no-cache" en lugar del arreglo ¿la cuestión? Vea aquí: http://stackoverflow.com/questions/1046966/whats-the-difference-between-cache-control-max-age-0-and-no-cache No estoy seguro de cómo configurar eso desde Django. –
No lo he intentado. Haciéndolo ahora ... – ram1
Eso no funcionó, Graham. Establecí el encabezado Cache-Control en "no-caché" y aún así Chrome entrega la versión en caché de la página, lo que impide la solicitud GET. Una vez más, puedo hacer clic en el botón Actualizar de Chrome en este punto para obtener el contenido nuevo, pero, naturalmente, quiero evitar que los usuarios tengan que hacerlo. – ram1