Differenza tra $ .ajax (); e $ .ajaxSetup ();

Qual è la differenza tra $.ajax(); e $.ajaxSetup(); in jQuery come in:

 $.ajax({ cache:false }); 

e

 $.ajaxSetup({ cache:true }); 

Inoltre, qual è la migliore opzione?

Quanto segue impedirà che tutte le future richieste AJAX vengano memorizzate nella cache, indipendentemente dal metodo jQuery che usi ($ .get, $ .ajax, ecc.)

 $(document).ready(function() { $.ajaxSetup({ cache: false }); }); 

dovresti usare $ .ajax, che ti permetterà di distriggersre la memorizzazione nella cache per quell’istanza:

 $.ajax({url: "myurl", success: myCallback, cache: false}); 

ajaxSetup imposta i valori predefiniti come validi per tutte le richieste ajaxSetup . Dopo questo non devi fare la stessa impostazione in $.ajax

Tutte le impostazioni in $.ajax saranno valide solo per quella chiamata ajax.

Il primo disabilita la cache in base alle richieste, la seconda la disabilita globalmente per impostazione predefinita per tutte le funzioni AJAX.

Per evitare la memorizzazione nella cache, un’opzione è quella di fornire URL diversi per la stessa risorsa o dati. Per generare URL diversi, puoi aggiungere una stringa di query casuale alla fine dell’URL. Questa tecnica funziona per richieste di ajax di tipo JQuery, Angular o di altro tipo.

 myURL = myURL +"?random="+new Date().getTime(); 

JQuery usa la tecnica simile tramite $.ajax({cache:false}); e $.ajaxSetup({cache:false});

$.ajax({cache:false}) applica la tecnica su cui è incluso, $.ajaxSetup({cache:false}); applica la tecnica per tutte le funzioni AJAX.

Inoltre, qual è la migliore opzione?

Secondo la documentazione di jQuery api , l’uso di $.ajaxSetup() non è raccomandato:

Nota: le impostazioni specificate qui influiranno su tutte le chiamate a $.ajax o derivati ​​basati su Ajax come $.get() . Ciò può causare comportamenti indesiderati poiché altri chiamanti (ad esempio, plug-in) potrebbero aspettarsi le normali impostazioni predefinite. Per questo motivo consigliamo vivamente di non utilizzare questa API . Invece, imposta le opzioni in modo esplicito nella chiamata o definisci un semplice plugin per farlo.