Come evitare la cache dei risultati Ajax / javascript nei browser?

Come impedire ai browser di memorizzare nella cache i risultati Ajax? Ho e evento triggersto script Ajax i risultati dei display solo quando i dati del browser è stato cancellato.

Testato in IE6 e Firefox 3.0.10

Aggiungi una stringa di query casuale all’URL che stai inviando.

Ad esempio, se la richiesta Ajax viene inviata a ” http://www.xyz.com/a “, aggiungere una stringa casuale alla fine: ” http://www.xyz.com/a?q=39058459ieutm39

L’URL casuale funziona, ma è una specie di hack. HTTP ha soluzioni integrate che dovrebbero funzionare. Prova ad usare la soluzione indicata qui . Fondamentalmente, imposta le intestazioni:

"Pragma": "no-cache", "Cache-Control": "no-store, no-cache, must-revalidate, post-check=0, pre-check=0", "Expires": 0, "Last-Modified": new Date(0), // January 1, 1970 "If-Modified-Since": new Date(0) 

Ho usato il metodo jQuery {cache: false} e ha funzionato come un fascino.

L’esempio di codice completo è simile a questo:

 $.ajaxSetup({cache: false}); 

Ci sono due tecniche per questo di cui sono a conoscenza.

  • Aggiungi una sorta di stringa di query all’URL di richiesta AJAX in modo che sia sempre univoca. Un timestamp millisecondo (forse combinato con un valore casuale) è buono per questo
  • Imposta le intestazioni di controllo della cache HTTP sulla risposta AJAX in modo che il browser non la memorizzi nella cache

usando jQuery puoi impostare l’impostazione globale dell’ajax: {cache: false}. Guardalo in jquery ajax docs