Domanda

Sto facendo un progetto in Django e utilizzando Djangos-css ( http://github.com / dziegler / django-css) e Sass ( http://sass-lang.com/). I file Sass sono serviti in sviluppo utilizzando django-css. Voglio scrivere una routine JavaScript che ogni secondo la restituzione delle attività CSS. Lo scopo di questo è il modo che il progettista può modificare i file Sass, ha colpito salvare, e vedere il risultato nel browser immediatamente senza applicazioni di commutazione e di colpire di aggiornamento.

Fondamentalmente ho bisogno di un modo per JavaScript per forzare il browser a ri-scaricare alcuni file senza fare un aggiornamento della pagina. È possibile?

È stato utile?

Soluzione

Il modo più semplice è di solito per aggiungere un parametro unico sul URL, spesso basta usare un timestamp

var timestamp = (new Date()).getTime();
url += '?time=' + timestamp;

Basta essere attenti se le vostre richieste hanno già i parametri, allora avete bisogno di aggiungere &time=' + timstamp invece.

Il browser non può memorizzare nella cache la richiesta perché ogni richiesta sembra unico.

Altri suggerimenti

Non tutte le cache saranno memorizzare nella cache il contenuto con una stringa di query.

Steve Souders raccomanda “... evitare una querystring per le risorse memorizzabili nella cache”. Ha scoperto che in questo caso non verrà memorizzata nella cache 5-20% delle richieste. stringhe di query, in particolare, non funzionano affatto con alcuni CDN per invalidazione della cache.

Il modo migliore è quello di generare un MD5 con il nome del file javascript per ogni release per es.

{path to script file}/filename-{md5 hash}.js

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top