Programing

캐시 설정 방법 : jQuery.get 호출에서 false

lottogame 2020. 10. 23. 07:31
반응형

캐시 설정 방법 : jQuery.get 호출에서 false


jQuery.get()jQuery.ajax()get call 의 속기입니다 . 그러나 호출 cache:false데이터를 설정 .get()하면 서버로 전송되는 것은 값이 false 인 cache라는 매개 변수입니다. 내 의도는 cache: falsejQuery.ajax 데이터에서 사용하는 경우 발생하는 캐싱을 방지하기 위해 데이터와 함께 타임 스탬프를 서버에 보내는 것 입니다. jQuery.ajax 호출에 대한 내 jQuery.get 호출을 다시 작성하거나 사용하지 않고 어떻게 수행합니까?

$.ajaxSetup({
    // Disable caching of AJAX responses
    cache: false
});

업데이트 : 답변 해주신 모든 분들께 감사드립니다. 당신은 모두 맞습니다. 그러나 캐시를 원하지 않는다는 것을 get 호출에 알리거나 해당 값을 기본 .ajax ()로 보내어 무엇을해야하는지 알 수있는 방법이 있기를 바랐습니다.

나는. 지금까지 확인 된 세 가지 방법 이외의 네 번째 방법을 찾고 있습니다.

  1. ajaxSetup을 통해 전역 적으로 수행

  2. .get 호출 대신 .ajax 호출 사용

  3. 타임 스탬프가있는 새 매개 변수를 .get 호출에 추가하여 수동으로 수행합니다.

이 기능이 .get 호출에 내장되어야한다고 생각했습니다.


나에게 올바른 방법은 나열된 것입니다. 어느 ajaxajaxSetup. 정말로 사용 get하고 싶지만 사용 하지 않으려는 경우 ajaxSetup고유 한 매개 변수를 만들어 현재 날짜 / 시간 값을 제공 할 수 있습니다.

그러나 나는 다른 방법 중 하나를 사용하지 않는 당신의 동기에 의문을 제기합니다.


매개 변수를 직접 추가하십시오.

$.get(url,{ "_": $.now() }, function(rdata){
  console.log(rdata);
});

jQuery 3.0부터 이제 다음과 같이 할 수 있습니다.

$.get({
  url: url, 
  cache: false
}).then(function(rdata){
  console.log(rdata);
});

캐싱을 끌 수있는 AJAX 메서드를 대신 사용해야한다고 생각합니다.

$.ajax({
  url: "test.html",
  data: 'foo',
  success: function(){
    alert('bar');
  },
  cache: false
});

JQuery와 문서 당, .get()단지 소요 url, data(내용) dataTypesuccess매개 변수로 콜백을. 여기서 실제로 원하는 것은 jqXHR 객체가 전송되기 전에 수정하는 것입니다. 를 사용 .ajax()하면이 beforeSend()방법을 사용할 수 있습니다. 그러나은 .get()지름길이므로 허용하지 않습니다.

하지만 .ajax()통화를 .get()통화 로 전환하는 것은 비교적 쉬울 것 입니다. 결국 .get()은의 하위 집합 뿐이 .ajax()므로에 대한 모든 기본값을 사용할 수 있습니다 .ajax()(물론에 대한 제외 beforeSend()).

편집하다:

:: Jivings의 답변을보십시오 ::

오 예, cache매개 변수를 잊어 버렸습니다 ! beforeSend()다른 헤더를 추가 하는 데 유용 하지만 cache여기 에서는 내장 매개 변수가 훨씬 더 간단합니다.


아래 메서드를 사용하여 jQuery.get 호출에서 캐시 설정 : false

Date().getTime(),동일한 밀리 초 내에 여러 요청이 발생하지 않는 한 충돌을 피하는 new 사용 하십시오.

또는

다음은 사용하는 jQuery 메서드 ($ .get, $ .ajax 등)에 관계없이 향후 모든 AJAX 요청이 캐시되는 것을 방지합니다.

$.ajaxSetup({ cache: false });

콜백 구문은 더 이상 사용되지 않습니다 .

지원 중단 알림

jQuery 1.5에 도입 된 jqXHR.success (), jqXHR.error () 및 jqXHR.complete () 콜백 메서드는 jQuery 1.8부터 더 이상 사용되지 않습니다. 최종 제거를 위해 코드를 준비하려면 대신 jqXHR.done (), jqXHR.fail () 및 jqXHR.always ()를 사용하십시오.

여기 promise인터페이스를 사용하는 현대화 된 솔루션

$.ajax({url: "...", cache: false}).done(function( data ) {
    // data contains result
}).fail(function(err){
    // error
});

I'm very late in the game, but this might help others. I hit this same problem with $.get and I didn't want to blindly turn off caching and I didn't like the timestamp patch. So after a little research I found that you can simply use $.post instead of $.get which does NOT use caching. Simple as that. :)

참고URL : https://stackoverflow.com/questions/8841425/how-to-set-cache-false-in-jquery-get-call

반응형