본문 바로가기
jQuery

AJAX & IE Caching Issues

by eqzero 2010. 2. 3.

프로젝트 진행중에 jQuery의 $.get 메소를 사용하여 데이터를 가져오는 로직이 추가되었다.
해당 처리부분을 테스트중에 한가지 이슈가 생겻다..

$.get 메소를 사용하여 데이터를 가져올때 계속 새로운 데이터를 가져오지 않고 브라우져의 캐쉬데이터를 사용하고 있더라.;;
해당 브라우져는 IE8.0이였으면 파폭에서 테스트했을경우 정상적으로 데이터를 가져오는 현상발생.;;
처음엔 jQuery의 $.get 메소드에 혹시 초기값을 셋팅을 해줘야하는게 있는줄알앗다.;;
확인결과 IE의 고질적인 브라우져 캐쉬버그(?)로 상당히 오랜전에 나왔던 이슈였던걸 이제야 내가 경험을 하게 됏다.-_-;..

jQuery의 $.get메소드 문제가 아니였으니 해결책은 몇가지 방법이 있었다.(jQuery 기준;;)

1. 파라미터값에 불특정값을 추가하여 매번 request를 날리게 한다..
    var params = {
      tsTimeStamp = new Date().getTime();
    }
    $("test.jsp", params, function (returnData){
        alert(returnData);
    });
   위와 같이하면 new Date()가 항상 다른 값이 나와 test.jsp호출시 매번 서버에 request를 날리게 된다.

2. $.post를 사용하라..
   사실 get과 post의 사용용도가 차이가 있다. get는 주로 일반적인 데이터 조회용이고 post는 데이터의 조작을 위할때 사용한다.
   어쨋든 post는 IE에서도 캐쉬를 사용하지 않으니 $.post를 사용하면 된다.

3. $.ajax 메소드의 cache : false 를 사용하라.
   $.get 이나 $.post의 경우 사용자의 편의를 위해 이미 기본셋팅이 된상태로서 사용자는 기본설정값만으로 사용되어진다.
   하지만 좀더 디테일하게 ajax를 사용하고자할려면 $.ajax를 사용 해당 설정값중에 cache 값에 false를 주면 된다..

참고 : [http://www.sitecrafting.com/blog/ajax-ie-caching-issues/]

'jQuery' 카테고리의 다른 글

$.getJSON을 post 방식으로 사용하기.  (0) 2010.11.28
jQuery 1.4 버젼업~!  (0) 2010.02.04
jQuery의 live() 함수.  (0) 2009.08.30
jQuery 성능 조정  (0) 2009.08.14
jQuery $.getJSON 사용한 동적 SELECTBOX구현  (0) 2009.05.03