2012-02-15 12 views
6

Usando el texto! complemento, ¿hay alguna manera de forzar RequireJS para volver a cargar un archivo en lugar de devolver los datos en caché?forzando el texto RequireJS! para recargar

+0

Podría ofrecer un enlace con el plug-in? ¿Has probado algo? ¿Falló, de alguna manera? –

+0

el complemento es http://requirejs.org/docs/api.html#text – nicholas

+3

No, nada está fallando, en realidad es como debería ser. Si carga un archivo de texto, cualquier solicitud posterior para ese archivo devolverá los datos cargados originalmente. Lo que estoy buscando es el extraño caso en que ese archivo podría haber cambiado y debería actualizarse. – nicholas

Respuesta

1

RequireJS solo almacenan en caché el archivo por solicitud. Una página de recarga lo traerá de nuevo. Si ve algo diferente es porque:

  • O tiene el almacenamiento en caché en su servidor.
  • o su navegador almacena en caché la solicitud. Por supuesto, puede deshabilitar esto en su navegador.

Si desea que los navegadores obtengan un archivo limpio cada vez, debe tener un encabezado sin memoria caché para estos recursos en su servidor.

+1

para hacer cumplir los archivos del navegador de carga del servidor se podría tratar de llamar con randomy generada cadena de consulta - como /Some-path-to-file/MyJSfile.js?v=TIMESTAMP – shershen

+0

@shershen Don' creo que pueda hacer eso con require.js – ggozad

+1

@ggozad puede añadir un parámetro GET a todas las peticiones de módulos hechos con RequireJS utilizando requirejs.config ({urlArgs: 'getParam'}) - esto puede ser utilizado para romper el almacenamiento en caché del navegador –

0

creo que se podría añadir la nueva función de caché html5 proporcionando un manifiesto de la caché: http://www.html5rocks.com/en/tutorials/appcache/beginner/

continuación, se puede utilizar el RequireJS "domready" para obtener el evento de carga adecuada: http://requirejs.org/docs/api.html#pageload

y luego escuchar el evento adecuado (código tomado desde el primer link):

window.applicationCache.addEventListener('updateready', function(e) { 
if (window.applicationCache.status == window.applicationCache.UPDATEREADY) { 
    // Browser downloaded a new app cache. 
    if (confirm('A new version of this site is available. Load it?')) { 
    window.location.reload(); 
    } 
} else { 
    // Manifest didn't changed. Nothing new to server. 
}}, false); 

en este punto cada vez que actualice urlArgs obtendrá los nuevos archivos js y con el manifiesto de caché f Ile obtendrá los nuevos archivos html