[jquery] Internet Explorer에서 jQuery Ajax 요청이 캐싱되는 것을 방지하는 방법은 무엇입니까?

Internet Explorer에서 jQuery Ajax 요청이 캐시되지 않도록하려면 어떻게해야합니까?



답변

$.ajaxSetup()예를 들어을 사용하여 전역 적으로 캐싱을 비활성화 할 수 있습니다 .

$.ajaxSetup({ cache: false });

요청시 쿼리 문자열에 타임 스탬프가 추가됩니다. 특정 $.ajax()통화에 대해 캐시를 끄려면 다음 cache: false과 같이 로컬로 설정 하십시오.

$.ajax({
  cache: false,
  //other options...
});


답변

고유 한 매개 변수를 설정하면 캐시가 작동하지 않습니다 (예 :

$.ajax({
    url : "my_url",
    data : {
        'uniq_param' : (new Date()).getTime(),
        //other data
    }});


답변

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 쿼리에 매개 변수를 추가하여 브라우저가 캐시 할 수 없도록하는 것입니다.

링크를 살펴보면 잘 설명되어 있습니다.


답변

다음과 같이 정의 할 수 있습니다.

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는 더 이상 캐시하지 않습니다.

나는 이것을 어려운 방법으로 알아내는 데 너무 많은 시간을 보냈다. 도움이 되길 바랍니다.


답변