ฉันจะป้องกันคำขอ jQuery Ajax ไม่ให้แคชใน Internet Explorer ได้อย่างไร
ฉันจะป้องกันคำขอ jQuery Ajax ไม่ให้แคชใน Internet Explorer ได้อย่างไร
คำตอบ:
คุณสามารถปิดการใช้งานแคชทั่วโลกโดยใช้$.ajaxSetup()
ตัวอย่างเช่น:
$.ajaxSetup({ cache: false });
การต่อท้ายนี้จะเพิ่มการประทับเวลาลงในการสอบถามเมื่อทำการร้องขอ หากต้องการปิดแคชสำหรับการ$.ajax()
โทรเฉพาะให้ตั้งค่าไว้cache: false
ในเครื่องแบบนี้:
$.ajax({
cache: false,
//other options...
});
cache: false
จะทำงานเฉพาะอย่างถูกต้องกับ HEAD และได้รับการร้องขอ นอกจากนี้ถ้าคุณตั้งcache: false
ใน$.ajaxSetup
ตามjQuery.ajaxSetup (เอกสาร)มันจะ "เป็นค่าเริ่มต้นที่ตั้งไว้สำหรับการร้องขอในอนาคตอาแจ็กซ์." ใช่แล้วมันจะปิดการใช้งานแคชสำหรับคำขอ HEAD และ GET AJAX ในอนาคตทั้งหมด
cache: false
สำหรับ การปิดการแคชทั่วโลกดูเหมือนเกินความจริง แต่การควบคุมตามคำขอนั้นสมบูรณ์แบบ ขอบคุณ
หากคุณตั้งค่าพารามิเตอร์ที่ไม่ซ้ำกันแคชจะไม่ทำงานตัวอย่างเช่น:
$.ajax({
url : "my_url",
data : {
'uniq_param' : (new Date()).getTime(),
//other data
}});
cache
พารามิเตอร์ทำอยู่เบื้องหลัง
Cache-Control: no-cache, no-store
ค่าส่วนหัวทั้งสองนี้สามารถรวมกันเพื่อให้ได้ผลตามที่ต้องการทั้ง IE และ Firefox
นี่คือข้อเสนอคำตอบ:
http://www.greenvilleweb.us/how-to-web-design/problem-with-ie-9-caching-ajax-get-request/
แนวคิดคือการเพิ่มพารามิเตอร์ลงในแบบสอบถาม ajax ของคุณที่มีตัวอย่างเช่นวันที่ปัจจุบันเวลาดังนั้นเบราว์เซอร์จะไม่สามารถแคชได้
ลองดูที่ลิงค์ก็อธิบายได้ดี
cache
พารามิเตอร์ทำอยู่เบื้องหลัง
คุณสามารถกำหนดได้ดังนี้:
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; ?>,
}
}
หรือเช่นนี้
$.get({url: <?php echo json_encode(site_url('your api'))?>, cache: false})
หวังว่ามันจะช่วย
นี่คือโพสต์เก่า แต่ถ้า IE จะทำให้คุณมีปัญหา เปลี่ยนคำขอ GET ของคุณเป็น POST และ IE จะไม่แคชอีกต่อไป
ฉันใช้เวลามากเกินไปในการหาวิธีที่ยาก หวังว่ามันจะช่วย
cache:false
เป็นกรณีไปคือวิธีที่จะไป