Comment empêcher la mise en cache d'une demande jQuery Ajax dans Internet Explorer?
Comment empêcher la mise en cache d'une demande jQuery Ajax dans Internet Explorer?
Réponses:
Vous pouvez désactiver la mise en cache globalement en utilisant $.ajaxSetup()
, par exemple:
$.ajaxSetup({ cache: false });
Cela ajoute un horodatage à la chaîne de requête lors de la demande. Pour désactiver le cache pour un $.ajax()
appel particulier , définissez- cache: false
le localement, comme ceci:
$.ajax({
cache: false,
//other options...
});
cache: false
ne fonctionnera correctement qu'avec les requêtes HEAD et GET. En outre, si vous définissez cache: false
dans $.ajaxSetup
, selon la documentation jQuery.ajaxSetup () , il sera « définir des valeurs par défaut pour les futures demandes Ajax. » Alors oui, cela désactivera le cache pour toutes les futures requêtes HEAD et GET AJAX.
cache: false
. Désactiver la mise en cache à l'échelle mondiale semble exagéré, mais avoir un contrôle par demande est parfait. Merci
Si vous définissez des paramètres uniques, le cache ne fonctionne pas, par exemple:
$.ajax({
url : "my_url",
data : {
'uniq_param' : (new Date()).getTime(),
//other data
}});
cache
fait déjà le paramètre dans les coulisses.
Cache-Control: no-cache, no-store
Ces deux valeurs d'en-tête peuvent être combinées pour obtenir l'effet requis sur IE et Firefox
Voici une proposition de réponse:
http://www.greenvilleweb.us/how-to-web-design/problem-with-ie-9-caching-ajax-get-request/
L'idée est d'ajouter un paramètre à votre requête ajax contenant par exemple la date du jour une heure, afin que le navigateur ne puisse pas le mettre en cache.
Jetez un oeil sur le lien, il est bien expliqué.
cache
fait déjà le paramètre dans les coulisses.
vous pouvez le définir comme ceci:
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; ?>,
}
}
ou comme ça:
$.get({url: <?php echo json_encode(site_url('your api'))?>, cache: false})
J'espère que ça aide
Il s'agit d'un ancien message, mais si IE vous pose problème. Modifiez vos demandes GET en POST et IE ne les mettra plus en cache.
J'ai passé beaucoup trop de temps à comprendre cela à la dure. J'espère que ça aide.
cache:false
au cas par cas est la voie à suivre.