Lo que me gustaría hacer es añadir una cadena de consulta al final de la ruta javascript para que cada vez que mi aplicación se actualice a una nueva versión, se descargue el javascript. Sin embargo, mientras la cadena de consulta sea la misma, quiero que siga usando la versión en caché sin hacer una solicitud http para verificar si el script ha cambiado.¿Firefox almacena en caché javascript y lo utiliza sin una solicitud si hay una cadena de consulta en la ruta?
La forma en que estoy logrando esto en PHP es leer la etiqueta CVS. Cuando estoy construyendo el código HTML de salida, he leído la etiqueta CVS y el uso que adjuntar al final del camino Javascript para que se crea una etiqueta de secuencia de comandos que se parece a esto:
<script src="javascript/messages/shipments.js?TPRSAPPS-DEV2_090828145712237-BRANCH" type="text/javascript"></script>
Mientras la aplicación no ha cambiado, la etiqueta permanecerá igual y, por lo tanto, la cadena de consulta también lo hará. El navegador debe almacenar en caché el JS y no hacer ninguna solicitud de red porque la fecha de vencimiento es muy futura. Cada vez que se actualiza la aplicación, esa cadena de consulta cambiará y el navegador debería descargarla.
Esto funciona muy bien en IE8. Mi problema es con Firefox. Firefox guarda en caché los archivos, pero la próxima vez que cargue la página Firebug muestra una respuesta 304, lo que indica que todavía hizo una solicitud de red para el archivo y luego descubrió que no había cambiado.
Así que mi pregunta es, ¿firefox ignora el encabezado expira y el caché de javascript cuando hay una cadena de consulta?
Relacionados: what does firefox decide not to cache? Aparentemente Rails hace algo similar. Pero esto no responde mi pregunta.
Aquí está la respuesta que estoy recibiendo de nuevo en este archivo:
https://appdev.prsx.net/~jhargett/PRSApps-Motorlog/javascript/menuReader.js?TPRSAPPS-DEV2_090828145712237-BRANCH-DIFFERENT
HTTP/1.1 304 Not Modified
Date: Mon, 03 Oct 2011 18:35:26 GMT
Server: Apache/2.2.3 (Red Hat)
Connection: close
Etag: "179010-3f8-49a9a74334200"
Vary: Accept-Encoding
La ficha Caché en Firebug dice:
Last Modified Mon Oct 03 2011 13:35:26 GMT-0500 (Central Daylight Time)
Last Fetched Mon Oct 03 2011 13:35:26 GMT-0500 (Central Daylight Time)
Expires Fri Oct 28 2011 18:33:31 GMT-0500 (Central Daylight Time)
Data Size 345
Fetch Count 12
Device disk
¿Qué sus cabeceras de respuesta HTTP parecen? Eso es lo importante aquí. – Pointy
Hacer un 304 es normal. Firefox enviará una solicitud GET para cada recurso en la página al menos una vez, con un encabezado "if-modified-since". Depende del servidor responder con contenido nuevo (200) o un 304. No modificado. –
Si el encabezado caduca es muy lejano, debería hacer una solicitud. –