2012-02-15 8 views
6

Utilizzare il testo! plugin, c'è un modo per forzare RequireJS a ricaricare un file invece di restituire i dati nella cache?forzare il testo RequireJS! per ricaricare

+0

Potresti fornire un collegamento al plug-in? Hai provato qualcosa? Ha fallito, in qualche modo? –

+0

il plug-in è http://requirejs.org/docs/api.html#text – nicholas

+3

No, non c'è niente, in realtà è come dovrebbe essere. Se si carica un file di testo, eventuali richieste successive per tale file restituiscono i dati originariamente caricati. Quello che sto cercando è il caso strano in cui quel file potrebbe essere cambiato e dovrebbe essere aggiornato. – nicholas

risposta

1

RequireJS memorizzerà il file solo per richiesta. Un ricaricamento della pagina lo recupererà di nuovo. Se vedi qualcosa di diverso è perché:

  • O si memorizza nella cache sul server.
  • oppure il browser memorizza nella cache la richiesta. Ovviamente puoi disabilitarlo sul tuo browser.

Se si desidera che i browser recuperino sempre un file pulito, è necessario disporre di un'intestazione senza cache per queste risorse sul server.

+1

per imporre al browser il caricamento dei file dal server, si potrebbe provare a chiamarli con una stringa di query generata a caso, come /Some-path-to-file/MyJSfile.js?v=TIMESTAMP – shershen

+0

@shershen Don ' Penso che puoi farlo con require.js – ggozad

+1

@ggozad puoi aggiungere un parametro GET a tutte le richieste di modulo fatte con requirejs usando requirejs.config ({urlArgs: 'getparam'}) - questo può essere usato per rompere il caching del browser –

0

penso che si potrebbe aggiungere la nuova funzionalità di cache HTML5, fornendo un manifesto della cache: http://www.html5rocks.com/en/tutorials/appcache/beginner/

quindi è possibile utilizzare il requirejs "domready" per ottenere il corretto evento di caricamento: http://requirejs.org/docs/api.html#pageload

e poi ascoltare l'evento corretto (codice preso dal primo 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); 

a questo punto ogni volta che si aggiorna urlArgs otterrete i nuovi file js e con la cache manifest f si riceveranno i nuovi file html

Problemi correlati