2013-02-23 10 views
7

Sono abbastanza nuovo per il mondo del web dev e server HTTP e simili, ma io ho uno script di shell di base come segue:CSS non aggiornare il pitone locale httpserver riavviare

PORT=2600 
if [[ $1 =~ ^[0-9]+$ ]] 
    then PORT=$1 
fi 

echo "Starting local http server (ctrl-c to exit)" 
echo "" 
echo " Demo: http://127.0.0.1:$PORT/demo" 
echo "" 
python -m SimpleHTTPServer $PORT 

Sembra funzionare va bene solo per mettere le cose, ma quando aggiorno il file css nella mia demo, raramente e incoerentemente aggiornerà il css visualizzato sulla pagina. Le modifiche apportate a qualsiasi html lo rendono soddisfacente, e occasionalmente ha mostrato i cambiamenti css, ma sento che sto facendo qualcosa di fondamentalmente sbagliato qui. Pensieri?

+0

so che questo è un po 'un gioco da ragazzi, ma hai una cache serveride? stai cancellando la cache lato client? se i tuoi file css non sono versionati cioè foo.css? (timestamp) ecc, allora il browser probabilmente lo metterà in cache per un periodo di tempo. – Brad

+0

C'è un modo per forzare la cancellazione della cache? –

+0

sì. dipende dal browser ma per firefox ad esempio puoi ctrl + shift + del e otterrai un pop up per cancellare la cache. Inoltre, puoi scegliere di navigare in modo discreto in chrome per evitare il caching di qualsiasi tipo. Detto questo, una pratica migliore è quella di aggiungere un numero di versione o un timestamp alla fine del file in modo che il browser pensi che sia un nuovo file e non memorizzi nella cache. – Brad

risposta

9

Il problema è il caching del browser. È possibile a) svuotare la cache del browser o attivare la navigazione in incognito o b) aggiungere una sorta di busting della cache alle risorse css/js, ad esempio foo.css?(timestamp) o foo.css?(version#) ecc. Per i sistemi più grandi, quest'ultimo è migliore in modo da non forzare gli utenti a cancella la cache del browser dopo un push del codice in produzione.

Problemi correlati