>  기사  >  웹 프론트엔드  >  IE8/IE9에서 Ajax 캐싱 문제

IE8/IE9에서 Ajax 캐싱 문제

亚连
亚连원래의
2018-05-23 16:49:071473검색

이 글은 IE8/IE9에서의 Ajax 캐시 문제에 대한 해결책을 소개합니다. 매우 훌륭하고 참고할만한 가치가 있습니다. 관심 있는 친구들은 함께 읽어보세요

Ajax 소개

Ajax는 "비동기"를 의미합니다. Javascript And XML”(Asynchronous JavaScript and XML)은 대화형 웹 애플리케이션을 만들기 위한 웹 개발 기술을 말합니다.

AJAX = 비동기 JavaScript 및 XML(표준 범용 마크업 언어의 하위 집합).

AJAX는 빠르고 동적인 웹 페이지를 만드는 기술입니다.

AJAX를 사용하면 백그라운드에서 서버와 소량의 데이터를 교환하여 웹페이지를 비동기적으로 업데이트할 수 있습니다. 이는 전체 페이지를 다시 로드하지 않고도 웹페이지의 일부를 업데이트할 수 있음을 의미합니다.

요점:

최근에 프런트 엔드에서 jquery를 사용하여 웹 사이트의 로그인 등록 상자를 만들고 있습니다. 회원가입과 로그인은 별도의 페이지가 아니기 때문에 팝업창으로 나타납니다. 그래서 저는 Ajax를 사용하여 등록 및 로그인 기능을 구현하기로 결정했습니다. 순조롭게 항해할 거라 생각했는데, 테스트 도중 이상한 문제를 발견했습니다.

 Chrome, ff, IE10+에서는 기본적으로 문제가 없으나, IE8, 9에서 실행 시 사용자명과 비밀번호를 정확하게 입력했는데도 로그인이 되지 않는 현상이 나타납니다. 처음에는 세션이 끊긴 줄 알고 백그라운드 프레임워크에 대해 불만을 토로하기 시작했습니다.

  하지만 인내심을 갖고 디버깅한 후에 세션이 손실되지 않은 것을 발견했습니다. 지금 정말 걱정됩니다. 너무 오랫동안 활동하다 보니 등록도 로그인도 안 되는 게 아닐까요? 이것은 나 자신을 얕보게 만들고 삶의 다양한 변화와 사물의 무상함을 한탄하게 만듭니다. 1/3 정도 향을 피운 후 힘내기로 결심했습니다.

댓글이 거의 없는 내 코드를 주의 깊게 관찰한 결과 $.ajax의 URL이 약간 이상하다는 것을 발견했습니다. 주소는 정확하지만 프로그래머와 공성 사자의 직관에 따르면 IE8과 9 두 형제가 스스로 내 Ajax를 캐시했을 수도 있습니다. 그런 생각을 하니 갑자기 손이 떨려서 서둘러 URL 뒤에 타임스탬프를 추가했습니다.

//就像这样url:myurl+"?t="+(new Date).valueOf()

그럼 캐시를 지우고 다시 시도해보세요 성공! 정상적으로 로그인이 가능합니다.

  Baidu를 확인한 결과 IE8 9에서는 Ajax 요청 시 이전 요청과 동일하면 데이터를 더 이상 서버에서 가져오지 않고 로컬에서 직접 가져오는 것으로 나타났습니다.

 이런 식으로 IE 하위 버전의 과도한 열정을 처리하기 위해 $.ajax를 사용할 때 캐시 속성을 false(테스트되지 않음)로 설정할 수 있습니다.

    캐시:

    부울 유형 매개변수가 필요합니다. , 기본값은 true입니다( dataType이 script인 경우 기본값은 false입니다). false로 설정하면 브라우저 캐시에서 요청 정보가 로드되지 않습니다.

또는 전체적으로 설정합니다(테스트되지 않음)

//$.ajaxSetup() 方法设置全局 AJAX 默认选项。$.ajaxSetup({ cache: false });

 이렇게 하면 더 이상 캐싱에 대해 걱정할 필요가 없습니다.

 다만, 저희에게 문제를 일으킬 정도로 캐시가 설정되어 있지는 않으니 결국 다른 브라우저에서도 정상적으로 사용이 가능합니다. 따라서 IE8 9에서는 캐시에 있는 정보를 비활성화하도록 별도의 설정이 필요합니다.

//jquery 1.9.0后取消了$.browserif($.browser.msie&&($.browser.version=="8.0"||$.browser.version=="9.0")){
//做处理 
}

 1.9.0 이후에는 $.support를 사용하여 판단할 수 있습니다

// IE6789,input元素的checked属性不能被拷贝// IE下,input被更换类型后,无法保持前一个类型所设的值if(!$.support.radioValue&&!$.support.noCloneChecked){
//做处理 
}

위 내용은 제가 모든 사람을 위해 정리한 내용입니다. 앞으로 모든 사람에게 도움이 되기를 바랍니다.

관련 기사:

Ajax 액세스를 사용할 때마다 IE8을 새로 고칠 수 없는 문제

Ajax가 Restful 인터페이스를 호출하여 Json 형식 데이터(코드 포함)를 전송하는 방식

Boa 서버에서 Ajax와 cgi 통신 (사진 및 텍스트 튜토리얼)

위 내용은 IE8/IE9에서 Ajax 캐싱 문제의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.