Как предотвратить кэширование запроса jQuery Ajax в Internet Explorer?
Как предотвратить кэширование запроса jQuery Ajax в Internet Explorer?
Ответы:
Вы можете отключить кэширование глобально, используя $.ajaxSetup()
, например:
$.ajaxSetup({ cache: false });
Это добавляет временную метку к строке запроса при выполнении запроса. Чтобы отключить кэш для определенного $.ajax()
вызова, установите cache: false
его локально, например:
$.ajax({
cache: false,
//other options...
});
cache: false
будет корректно работать только с HEAD и GET-запросами. Кроме того, если вы установите cache: false
в $.ajaxSetup
соответствии с документацией jQuery.ajaxSetup () , он «установит значения по умолчанию для будущих запросов Ajax». Так что да, он отключит кеш для всех будущих запросов 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
в каждом конкретном случае это путь.