Recarga de página completa en Post / Redirect / Get ignorando el control de caché
Tengo una página que carga muchas imágenes, CSS y JavaScript. Agregué un encabezado Expires de futuro lejano y configuré Cache-Control como público en estas dependencias externas para que se almacenen en caché. Pero cada vez que hago un Post / Redirect / Get Chrome intenta cargar estos nuevamente. Este comportamiento es muy similar a la recarga de la página. He agregado ETags y manejo el encabezado If-None-Match que ayuda un poco, pero aún genera demasiadas solicitudes inútiles.
¿Cómo le digo a Chrome y Safari que obtengan los archivos del caché?
chrome NOK
safari NOK
firefox OK
ie OK
Ver tambiénRecarga de página completa en Post / Redirect / Get ignorando el control de caché en el foro de soporte de google.
Aclaración:
No quiero que el navegador soliciteimage1.png
dos veces. Debería estar en caché.
200 GET page1.html
200 GET image1.png (Cache-Control: public, Expires and ETag)
302 POST action.asp (form submitted from page1.html, redirects)
200 GET page2.html
304 GET image1.png (If-None-Match)
Ejemplo:
He creado un ejemplo simple para ilustrar el problema.
Encabezados:
Los encabezados que envío con la imagen son:
HTTP/1.1 200 OK
Date: Fri, 18 Jun 2010 11:30:22 GMT
Server: Apache
Cache-Control: public, max-age=86400
Expires: Sat, 19 Jun 2010 11:30:24 GMT
Etag: "123"
Content-Length: 866
Content-Type: image/png
Lo que debería hacerlo en caché durante 24 horas. No hay Vary: * ni nada por el estilo.
Actualizar: Este comportamiento ahora también está presente en Safari Mobile en iOS 4. Una regresión horrible en la velocidad de carga de la página.
Actualizar: Hay un informe de error sobre este problema en el webkit bugzilla.Error 38690: el envío de una POST que conduce a una redirección del servidor hace que todos los elementos almacenados en caché se vuelvan a descargar
Actualizar: El problema persiste en iOS 4.0.1
Actualizar: El problema persiste en iOS 4.1
Actualizar: El problema persiste en iOS 4.2
Actualizar: El problema persiste en iOS 4.2.1 y en Chrome desde la versión 6 hasta la 9.
Actualizar: Hay un informe de error sobre este problema en el proyecto Chromium. (puedes marcarlo para demostrar que te importa)Problema 68621: Publicar / Redirigir / Obtener ignorar las instrucciones de caché
Actualizar: El problema persiste en Chrome desde la versión 6 hasta la 10. Ahora es un error de 9 meses.
Actualizar: El problema se solucionó a partir del 2011-03-21 19:33:07 PST. Esto se refleja en el comportamiento del cromo 12 (canario).