Làm cách nào để ngăn yêu cầu jQuery Ajax lưu vào bộ đệm trong Internet Explorer?
Làm cách nào để ngăn yêu cầu jQuery Ajax lưu vào bộ đệm trong Internet Explorer?
Câu trả lời:
Bạn có thể vô hiệu hóa bộ đệm ẩn trên toàn cầu bằng cách sử dụng $.ajaxSetup()
, ví dụ:
$.ajaxSetup({ cache: false });
Điều này sẽ thêm dấu thời gian vào chuỗi truy vấn khi thực hiện yêu cầu. Để tắt bộ nhớ cache cho một $.ajax()
cuộc gọi cụ thể , hãy đặt cache: false
nó cục bộ, như thế này:
$.ajax({
cache: false,
//other options...
});
cache: false
sẽ chỉ hoạt động chính xác với các yêu cầu CHÍNH và NHẬN. Ngoài ra, nếu bạn thiết lập cache: false
trong $.ajaxSetup
, theo jQuery.ajaxSetup () tài liệu , nó sẽ "giá trị mặc định thiết lập cho các yêu cầu trong tương lai Ajax." Vì vậy, có, nó sẽ vô hiệu hóa bộ đệm cho tất cả các yêu cầu CHÍNH và NHẬN AJAX trong tương lai.
cache: false
. Tắt bộ nhớ đệm trên toàn cầu có vẻ như quá mức cần thiết, nhưng có quyền kiểm soát theo yêu cầu là hoàn hảo. Cảm ơn
Nếu bạn đặt tham số duy nhất, thì bộ đệm không hoạt động, ví dụ:
$.ajax({
url : "my_url",
data : {
'uniq_param' : (new Date()).getTime(),
//other data
}});
cache
tham số đã làm đằng sau hậu trường.
Cache-Control: no-cache, no-store
Hai giá trị tiêu đề này có thể được kết hợp để có được hiệu ứng cần thiết trên cả IE và Firefox
Đây là một đề xuất câu trả lời:
http://www.greenvilleweb.us/how-to-web-design/probols-with-ie-9-caching-ajax-get-request/
Ý tưởng là thêm một tham số vào truy vấn ajax của bạn, ví dụ như ngày hiện tại một thời gian, do đó trình duyệt sẽ không thể lưu trữ nó.
Có một cái nhìn vào các liên kết, nó được giải thích tốt.
cache
tham số đã làm đằng sau hậu trường.
bạn có thể định nghĩa nó như thế này:
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; ?>,
}
}
hoặc như thế này:
$.get({url: <?php echo json_encode(site_url('your api'))?>, cache: false})
hy vọng nó giúp
Đây là một bài viết cũ, nhưng nếu IE gây rắc rối cho bạn. Thay đổi các yêu cầu GET của bạn thành POST và IE sẽ không còn lưu trữ chúng.
Tôi đã dành quá nhiều thời gian để tìm ra điều này một cách khó khăn. Hy vọng nó giúp.
cache:false
trên cơ sở từng trường hợp là cách để đi.