Come contrassegnare le cache javascript dei client come non valide [duplicate]


2

Possibile duplicato:
Firefox sta memorizzando i file javascript anche se tutte le cache sono spente?

Ho un sito che è contemporaneamente in uso e in fase di sviluppo, e ogni tanto ho bisogno di aggiornare il Javascript. Tuttavia, i browser in visita (testati in Firefox) in genere utilizzano i propri javascript crittografati anche se le copie sul lato server sono state modificate. Questo porta a problemi, specialmente quando il markup della pagina cambia insieme al javascript.

L'unica "soluzione" che ho trovato è che il client visualizzi l'origine, faccia clic sul javascript incriminato e, una volta caricato nella finestra di visualizzazione, aggiorni la finestra di visualizzazione, quindi aggiorni la pagina effettiva. Questa non è certo una soluzione. C'è un modo per farlo in modo trasparente, lato server?


Risposte:


4

La soluzione migliore sembra essere quella di aggiungere una stringa di versione alle tue richieste.

javascript.js?v=xxx

Ogni volta che il file cambia, aggiorna la stringa di versione. Naturalmente, la stringa di versione non deve fare nulla e punta sempre verso lo stesso file. Il browser ricaricherà il file javascript. Il vantaggio qui è che è possibile impostare una durata della cache molto elevata per ridurre anche il carico non necessario.


è perfetto, grazie! Come faccio a impostare la durata della cache in modo elevato?
Mala

1
Giusto, anche se abbastanza tristemente alcuni software CMS mal configurato e simili, infatti, erroneamente dicono al browser di non memorizzare nella cache nulla quando un URL di richiesta GET contiene parametri. Questo è facilmente controllato, sbirciando nelle intestazioni di risposta. (Mi piace usare Firebug, Web Inspector o anche web-sniffer.net )
Arjan

@Mala; Quello sarebbe il Expires: Sezione di intestazione HTTP, o Cache-Control. Entrambi sono dettagliati in tutto il web, web-caching.com/mnot_tutorial/how.html sembra buono.
Phoshi
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.