2010-11-19 6 views
3

PHP에서는 기본적으로 캐시 관련 헤더가 전송되지 않습니다. 이제PHP에서 캐싱 헤더

HTTP/1.1 200 OK 
Date: Fri, 19 Nov 2010 11:02:16 GMT 
Server: Apache/2.2.15 (Win32) PHP/5.2.9-2 
X-Powered-By: PHP/5.2.9-2 
Vary: Accept-Encoding 
Content-Encoding: gzip 
Content-Length: 26 
Keep-Alive: timeout=5, max=100 
Connection: Keep-Alive 
Content-Type: text/html 

, 이후로는 캐싱에 대해 아무것도, 그것은 example.com/index.php 어떤 상황에 캐시 점점 말을 초래할 수 있다고하지 않습니다 기본?

답변

4

header("Cache-Control: no-store, no-cache, must-revalidate"); 

다른 모든 방법이 실패

는 캐싱을 방지합니다. 그것을 반환 할 수있다,

특히 캐시 제어에 의해 제한되지 않는 한

(section 14.9) 지침이 항상 성공적인 응답을 저장할 수 캐싱 시스템 (참조 section 13.8) 캐시 항목으로 : 일반적으로, every successful response may be cached은하지 않는 몇 가지 constrains있다 검증이없는 경우 유효성을 검증하지 않고 유효성을 검증 한 후에이를 리턴 할 수있다.

4

예, 일반적으로 서버 측에서 규칙이 설정되지 않은 경우 브라우저는 기본적으로 특정 파일 (일반적으로 이미지 및 CSS)을 캐시합니다 (browser cache 참조).

당신이를 제어하기 위해 캐시 제어 헤더를 설정하거나 사용하여 완전히 해제 할 수 있습니다 :

header("Cache-Control: no-store, no-cache, must-revalidate"); 
header("Cache-Control: post-check=0, pre-check=0", false); 
header("Pragma: no-cache"); 

header 예 # 2를 참조하고 아래에있는 메모를 읽어 보시기 바랍니다.

1

일부 상황에서 example.com/index.php가 캐시 될 수 있습니까?

그러나이 경우 올바르게 작동하지 않는 구현 (특히 모바일 장치/모바일 프록시)이 많이 있습니다.

캐싱에 대한 많은 잘못된 정보도 있습니다. 'Pragma : no-cache'는 서버에서 전송할 때 meaningless입니다. - check the manual