이 기사에서는 주로 IE 브라우저의 Ajax 캐싱 메커니즘을 소개합니다. 이 기사에서는 Ajax가 브라우저의 캐싱 문제를 해결한다고 언급합니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.
IE 브라우저는 동일한 URL에 대해 동일한 결과만 반환합니다. 기본적으로 IE는 Ajax 요청 결과를 캐시하기 때문입니다. 동일한 URL 주소의 경우 캐시가 만료되기 전에 실제로 첫 번째 요청만 서버로 전송됩니다. 대부분의 경우 부분 새로 고침을 달성하기 위해 ajax를 사용하므로 여기에는 개선 문제가 포함됩니다.
매번 최신 데이터를 얻으려면 전달된 URL이 매번 다른지 확인하기만 하면 됩니다. 가장 간단한 방법은 매개변수를 URL에 연결하는 것입니다. 난수를 생성하려면 수학 함수의 random() 메서드를 사용합니다.
예를 들어 Baidu www.baidu.com을 방문할 때 주소를 www.baidu.com?t=Math.random() 또는?t=new Date().getTime();
이라고 쓸 수 있습니다. 그 중 Ajax의 기본 사용법을 검토해 볼 수도 있습니다.
*Ajax 생성 개체:
var xmlhttp; if (window.XMLHttpRequest){ //IE7+, Firefox, Chrome, Opera, Safari xmlhttp = new XMLHttpRequest(); } else{ //IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); }
*Ajax 요청:
//GET请求: xmlhttp.open("GET","test1.txt",true); xmlhttp.send(); //POST请求: xmlhttp.open("POST","demo_post.asp",true); xmlhttp.send();
GET 또는 POST?
POST에 비해 GET은 더 간단하고 빠르며 대부분의 경우 작동합니다.
단, 다음과 같은 경우에는 POST 요청을 이용해 주시기 바랍니다.
캐시된 파일을 사용할 수 없는 경우(서버의 파일 또는 데이터베이스 업데이트 중)
서버에 대량의 데이터를 보내는 경우(POST에는 데이터 크기 제한이 없음)
사용자 입력을 보내는 경우 알 수 없는 문자 포함 동시에 POST는 GET
*Ajax 응답보다 더 안정적이고 신뢰할 수 있습니다.
서버의 응답을 얻으려면 XMLHttpRequest 객체의 responseText 또는 responseXML 속성을 사용해야 합니다.
ResponseText: 문자열 형식으로 응답 데이터를 가져옵니다.
document.getElementById("myp").innerHTML=xmlhttp.responseText;
ResponseXML: 응답 데이터를 XML 형식으로 가져옵니다.
서버의 응답이 XML이고 XML 객체로 구문 분석해야 하는 경우.
*Ajax - onreadystatechange:
요청이 서버로 전송되면 몇 가지 응답 기반 작업을 수행해야 합니다.
readyState가 변경될 때마다 onreadystatechange 이벤트가 트리거됩니다.
onreadystatechange 이벤트에서는 서버 응답을 처리할 준비가 되었을 때 수행할 작업을 지정합니다.
readyState가 4이고 상태가 200이면 응답이 준비되었음을 의미합니다.
xmlhttp.onreadystatechange=function() { if (xmlhttp.readyState==4 && xmlhttp.status==200) { document.getElementById("myp").innerHTML=xmlhttp.responseText; } }
추가: Ajax가 브라우저의 캐싱 문제를 해결할 수 있는 주요 이유를 살펴보겠습니다
즉, 데이터를 로드하는 동안 데이터가 메모리에 캐시됩니다. 데이터는 제출 시 페이지가 새로 고쳐지지 않는 한 항상 메모리에 캐시됩니다. URL이 기존 URL과 일치하면 서버에 제출할 필요가 없습니다. 즉, 서버의 부하가 줄어들고 사용자 경험이 향상되지만, 서버에서 데이터를 얻을 필요가 없습니다. 최신 데이터를 얻을 수 없습니다. 읽은 정보를 최신 상태로 유지하려면 캐싱 기능을 비활성화해야 합니다.
해결 방법은 다음과 같습니다.
①Ajax에서 요청을 보내기 전에 anyAjaxObj.setRequestHeader("If-Modified-Since", "0")를 추가합니다.
②Ajax 요청을 보내기 전에 anyAjaxObj.setRequestHeader("Cache-Control", "no-cache")를 추가하세요.
3URL 뒤에 임의의 숫자를 추가하세요: "fresh=" + Math.random();.
4URL 뒤에 시간을 추가하세요: "nowtime=" + new Date().getTime();.
⑤ jQuery를 사용하는 경우 $.ajaxSetup({cache:false})를 사용하세요. 이런 방식으로 페이지의 모든 Ajax는 캐시 레코드를 저장하지 않고 명령문을 실행합니다.
요약
위는 편집자가 소개한 IE 브라우저의 Ajax 캐싱 메커니즘이 모든 분들께 도움이 되기를 바랍니다. 더 많은 관련 튜토리얼을 보려면 AJAX 기본 비디오 튜토리얼, JavaScript 비디오 튜토리얼, bootstrap 비디오 튜토리얼을 방문하세요!
위 내용은 ajax---IE 브라우저의 캐싱 메커니즘에 대한 간략한 토론의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!