Come posso impedire la memorizzazione nella cache di una richiesta jQuery Ajax in Internet Explorer?
Come posso impedire la memorizzazione nella cache di una richiesta jQuery Ajax in Internet Explorer?
Risposte:
È possibile disabilitare la memorizzazione nella cache a livello globale utilizzando $.ajaxSetup()
, ad esempio:
$.ajaxSetup({ cache: false });
Ciò accoda un timestamp alla stringa di query quando si effettua la richiesta. Per disattivare la cache per una determinata $.ajax()
chiamata, impostala cache: false
localmente, in questo modo:
$.ajax({
cache: false,
//other options...
});
cache: false
funzionerà correttamente solo con le richieste HEAD e GET. Inoltre, se si imposta cache: false
nel $.ajaxSetup
secondo jQuery.ajaxSetup documentazione () , lo farà "impostare i valori predefiniti per le richieste future Ajax". Quindi sì, disabiliterà la cache per tutte le future richieste HEAD e GET AJAX.
cache: false
. Disattivare la cache a livello globale sembra eccessivo, ma avere il controllo per richiesta è perfetto. Grazie
Se si impostano parametri univoci, la cache non funziona, ad esempio:
$.ajax({
url : "my_url",
data : {
'uniq_param' : (new Date()).getTime(),
//other data
}});
cache
parametro fa già dietro le quinte.
Cache-Control: no-cache, no-store
Questi due valori di intestazione possono essere combinati per ottenere l'effetto richiesto su IE e Firefox
Ecco una proposta di risposta:
http://www.greenvilleweb.us/how-to-web-design/problem-with-ie-9-caching-ajax-get-request/
L'idea è quella di aggiungere un parametro alla query ajax contenente ad esempio la data corrente un'ora, quindi il browser non sarà in grado di memorizzarla nella cache.
Dai un'occhiata al link, è ben spiegato.
cache
parametro fa già dietro le quinte.
puoi definirlo così:
let table = $('.datatable-sales').DataTable({
processing: true,
responsive: true,
serverSide: true,
ajax: {
url: "<?php echo site_url("your url"); ?>",
cache: false,
type: "POST",
data: {
<?php echo your api; ?>,
}
}
o in questo modo:
$.get({url: <?php echo json_encode(site_url('your api'))?>, cache: false})
spero che sia d'aiuto
Questo è un vecchio post, ma se IE ti sta dando problemi. Cambia le tue richieste GET in POST e IE non le memorizzerà più nella cache.
Ho passato troppo tempo a capirlo nel modo più duro. Spero che sia d'aiuto.
cache:false
caso per caso sono la strada da percorrere.