Bir jQuery Ajax isteğinin Internet Explorer'da önbelleğe alınmasını nasıl önleyebilirim?
Bir jQuery Ajax isteğinin Internet Explorer'da önbelleğe alınmasını nasıl önleyebilirim?
Yanıtlar:
Önbelleği global olarak aşağıdakileri kullanarak devre dışı bırakabilirsiniz $.ajaxSetup()
, örneğin:
$.ajaxSetup({ cache: false });
Bu, istekte bulunurken querystring öğesine bir zaman damgası ekler. Belirli bir $.ajax()
çağrı için önbelleği kapatmak için , cache: false
yerel olarak şu şekilde ayarlayın:
$.ajax({
cache: false,
//other options...
});
cache: false
sadece HEAD ile düzgün çalışmayabilir ve isteklerini GET olacaktır. Ayrıca, ayarlarsanız cache: false
içinde $.ajaxSetup
, uygun jQuery.ajaxSetup () belgelerine , bu "gelecek Ajax istekleri için ayarlanan varsayılan değerler." Evet, gelecekteki tüm HEAD ve GET AJAX istekleri için önbelleği devre dışı bırakacaktır.
cache: false
. Global olarak önbelleği kapatmak aşırıya kaçma gibi görünüyor, ancak istek başına kontrol sahibi olmak mükemmel. Teşekkürler
Benzersiz parametreler ayarlarsanız, önbellek çalışmaz, örneğin:
$.ajax({
url : "my_url",
data : {
'uniq_param' : (new Date()).getTime(),
//other data
}});
cache
Parametrenin perde arkasında zaten yaptığı şey budur .
Cache-Control: no-cache, no-store
Bu iki başlık değeri hem IE hem de Firefox üzerinde gerekli etkiyi elde etmek için birleştirilebilir
İşte bir cevap teklifi:
http://www.greenvilleweb.us/how-to-web-design/problem-with-ie-9-caching-ajax-get-request/
Fikir, ajax sorgunuza örneğin geçerli tarihi bir kez içeren bir parametre eklemektir, böylece tarayıcı bunu önbelleğe alamaz.
Bağlantıya bir göz atın, iyi açıklanmıştır.
cache
Parametrenin perde arkasında zaten yaptığı şey budur .
şöyle tanımlayabilirsiniz:
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; ?>,
}
}
ya da bunun gibi:
$.get({url: <?php echo json_encode(site_url('your api'))?>, cache: false})
Umarım yardımcı olur
Bu eski bir gönderi, ancak IE size sorun çıkarıyorsa. GET isteklerinizi POST olarak değiştirin; IE artık bunları önbelleğe almaz.
Bunu zor yoldan anlamak için çok fazla zaman harcadım. Umarım yardımcı olur.
cache:false
duruma göre ayarlar , gidilecek yoldur.