[jquery] jQuery에서 getJSON에 대해 캐시를 false로 설정하는 방법은 무엇입니까?

getJSON서버 측에서 결과를 가져 오는 데 사용 하고 있지만 브라우저 캐시 문제에 직면 해 있습니다. 캐시가 거짓 이길 원합니다. getJSON전화 하기 직전에 이것을 사용해 보았습니다 .

 $.ajaxSetup({
                cache: false
            })

그러나 나는 예상되는 결과를 얻지 못하고 있습니다. 여전히 이전 결과를 보여줍니다.

사용과 같은 다른 솔루션도 확인 .ajax했지만 실제로 사용하고 싶지 않습니다.



답변

코드를 활성화하려면 트리거가 필요합니다.

그러면 향후 모든 ajax에서 캐시를 비활성화 할 수 있습니다.

$(document).ready(function() {
  $.ajaxSetup({ cache: false });
});

도움이되기를 바랍니다 🙂


답변

다음 중 하나를 사용하면 캐시가 전역 적으로 비활성화됩니다.

$(document).ready(function() {
  $.ajaxSetup({ cache: false });
});

또는 대신 $.getJSON이러한 요청에 대해서만 캐시를 비활성화하려면 다음을 수행하십시오.

$.ajax({
    cache: false,
    url: "/path/to.json",
    dataType: "json",
    success: function(data) {
        ...
    }
});


답변

semente 및 bonesnatch의 답변은 정확하지만 $ .getJSON 및 다른 곳에서 사용하려면 캐싱을 활용하십시오 (모든 호출에 대해 캐시를 false로 설정하고 싶지는 않음). 한 번의 호출로 $ .getJSON ()의 데이터 속성에 타임 스탬프를 삽입 할 수 있습니다. 요청의 쿼리 문자열에 고유 한 값을 추가하면 요청이 항상 고유하고 브라우저에서 캐시되지 않습니다. 항상 최신 데이터를 얻을 수 있습니다.

긴 버전 :

var ts = new Date().getTime();
var data = {_: ts};
var url = '/some/path.json';

$.getJSON(url, data);

하나의 버전에서 모두 :

$.getJSON('/some/path', {_: new Date().getTime()});

둘 다 다음 요청이 발생합니다.

/some/path.json?_=1439315011130

끝에있는 숫자는 코드가 호출되는 순간의 타임 스탬프이므로 항상 고유합니다.


답변