>  기사  >  백엔드 개발  >  Ajax 캐싱

Ajax 캐싱

巴扎黑
巴扎黑원래의
2016-11-29 11:48:481370검색

Ajax에서 캐시된 요청 문제

Ajax 개발 시 브라우저에서 콘텐츠를 캐시하는 문제에 직면하게 됩니다. 예를 들어 특정 요소가 마우스 이벤트(onmouseover)를 등록한 경우 이벤트가 트리거된 후입니다. , xmlhttprequest 서버에서 콘텐츠 가져오기를 전달합니다. 페이지를 새로 고치지 않으면 브라우저가 처음으로 요청한 콘텐츠를 캐시합니다. 서버가 업데이트된 후에도 브라우저는 처음으로 콘텐츠를 표시합니다.

일반적으로 이러한 종류의 요청은 xmlhttprequest에 의해 시작된 GET 요청입니다. HTTP 사양에 따르면 GET은 정보 검색에 사용되며 멱등성이 있어야 합니다. 즉, 동일한 URL을 사용하여 반복된 GET 요청이 동일한 예상 결과를 반환하는 경우 GET 메서드가 적합합니다. 요청에 부작용이 있는 경우(예: 신규 사용자 등록을 위해 데이터를 제출하는 경우) GET 대신 POST 요청을 사용해야 합니다. 따라서 브라우저는 GET 요청을 캐시합니다.

해결책:

1. 서버가 동일한 요청이 아닌 것으로 인식하도록 GET 요청 URL 뒤에 문자열을 추가합니다.

예제 "http://www.example.com/index.php?class=aitcle&page=5&_t=" + new Date().getTime()

2. ajax xmlHttpRequest.setRequestHeader("If-Modified-Since","0")

3. ajax 요청을 보내기 전에 xmlHttpRequest.setRequestHeader("Cache-Control","no-cache")를 추가하세요. >
4. 서버가 요청에 응답하면 header("Cache-Control: no-cache, must-revalidate")(PHP)를 추가합니다.

5. GET 대신 POST를 사용합니다. POST는 캐시되지 않습니다

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