본문 바로가기

IT/JQUERY

[jQuery] ajax cache 이슈/ IE 에서 cache 가 남아있는 경우

반응형

 

IE에서 페이지 로그인을 하려고 하는데 갑자기 에러가 발생??

다른 브라우저에서는 안 그러는데 IE에서만 해당 현상이 발생했다.

왜지???

찾아보니  IE에서  ajax GET방식으로 cache가 남아서 오류가 발생하는 경우가 있다고한다.

cache가 남아있어서 처음 한번만 서버에 호출을하고 그후론 호출을 안한다...

아래 코드처럼 호출을 하고 있었다.

$.ajax({
  url: "" ,
  type : "get",
  dataType:"json",
  async:false,
  error:function(xhr, txt){
    console.log("실패");
    return false;
  },
  success:function(data){
    console.log("성공");
    return true;
  }
});

IE에서 ajax get 방식으로 호출할 경우 cache가 남아있는 경우가 있다고 한다.

 

해결방법

1. POST 방식으로 바꾼다...

(무책임)

2. ajax 옵션 중 cache:false라는 설정값을 넣는다.

$.ajax({ cache: false });

 

 

참고 api.jquery.com/jquery.ajax/

 

jQuery.ajax() | jQuery API Documentation

Description: Perform an asynchronous HTTP (Ajax) request. The $.ajax() function underlies all Ajax requests sent by jQuery. It is often unnecessary to directly call this function, as several higher-level alternatives like $.get() and .load() are available

api.jquery.com

 

3. 호출하는 url뒤에 랜덤 값을 넣어서 계속 다른 url을 호출하는 것처럼 만든다.

ex
url : testurl.do?random=랜덤값

위처럼 url 뒤에 랜덤 파라미터 값을 넣어주면 될 거 같다.

4. 메타 태그를 넣어준다.

<meta http-equiv='cache-control' content='no-cache'>
<meta http-equiv='expires' content='0'>
<meta http-equiv='pragma' content='no-cache'>

 

왜 항상 찾기 힘든 버그는 IE인 건가...

728x90
반응형