>백엔드 개발 >PHP 튜토리얼 >ajax2—캐싱 문제 해결—php (28)

ajax2—캐싱 문제 해결—php (28)

WBOY
WBOY원래의
2016-08-08 09:24:201199검색

5. Ajax 빠른 시작

ajax 코드:

PHP 프로그램:

6. 데이터 보내기

Ajax get 요청 시 전송할 데이터를 URL 끝에 추가해야 합니다

Ajax 게시 요청 시 전송할 데이터를 전송 메소드의 매개변수에 배치해야 합니다

Ajax 코드:

PHP 코드:

요청한 URL을 의도적으로 잘못 작성했습니다. 존재하지 않는 URL을 요청하더라도 결국 ajax 객체의 상태 코드는 4가 되고 해당 명령문이 실행된다는 사실을 발견했습니다. 요청이 오류 페이지이면 해당 문을 실행하면 안 됩니다

해당 사항을 수정하세요

ajax를 사용하여 두 숫자의 합 계산

7. 캐시 문제 해결

위 질문:

PHP의 덧셈을 뺄셈으로 변경

이전 요청 매개변수를 사용한 경우에도 여전히 추가인 것으로 확인됩니다. 새로운 요청 매개변수인 경우 빼기입니다.

해결책 1: 난수

수학.랜덤()

URL 뒤에 js 난수를 생성하여 이번에 요청한 URL이 고유하도록 매번 최신 데이터가 반환되도록 합니다

그러나 이 방법은 캐싱 문제를 근본적으로 해결하지 못하고, 단지 대량의 캐시 파일을 생성할 뿐이라는 것을 알고 있습니다

한 가지 더: 임의의 숫자는 이 URL이 완전히 고유하다는 것을 보장하지 않습니다

해결책 2:

시간

new Date().getTime(); //밀리초 타임스탬프 가져오기

위 메소드는 URL에 타임스탬프를 직접 추가하여 현재 URL을 고유하게 만듭니다. 실행 측면에서 이 메소드는 항상 고유합니다

그러나 임시 파일 아래에 여전히 많은 수의 캐시 파일이 생성됩니다.

해결책 3. 요청 헤더 설정

setRequestHeader("If-Modified-Since","0");

원리: http 요청을 보내기 전에 ajax 개체를 사용하여 http 요청 헤더 정보를 설정합니다. 이는 현재 요청 중인 리소스의 마지막 수정 시간이 "0"임을 나타내는 것이며, 서버가 이 시간을 얻은 후 비교됩니다. 서버에 있는 파일과 마지막 수정 시간을 비교하여, 다르면 가장 최근의 실행 결과를 반환합니다.

이렇게 하면 결국에는 항상 캐시 파일이 하나만 남게 됩니다.

해결책4. 응답 헤더 설정

header("캐시 제어: 캐시 없음, 재검증 필수");

PHP의 헤더 기능을 사용하여 응답 헤더에 데이터를 씁니다. 클라이언트에게 이 결과를 캐시하지 말라고 알리는 것입니다.

이러한 접근 방식은 캐시 파일을 생성하지 않고도 캐싱 문제를 근본적으로 해결할 수 있습니다.

질문 예시:

사용자 이름을 사용할 수 있는지 확인

위에는 ajax2 - 캐쉬 문제 해결 - php(28) 내용을 포함하여 소개하고 있는데, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되었으면 좋겠습니다.

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