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: falselocalmente, in questo modo:
$.ajax({
cache: false,
//other options...
});
cache: falsefunzionerà correttamente solo con le richieste HEAD e GET. Inoltre, se si imposta cache: falsenel $.ajaxSetupsecondo 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
}});
cacheparametro 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.
cacheparametro 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:falsecaso per caso sono la strada da percorrere.