2014-07-26 3 views
0

PHP 캐시 제어에 대한 기사를 읽었습니다.PHP 캐시 제어 개념

그들은 개념과 코딩에 대해 말했지만, 나는 아직도의 아이디어를 얻을 수 없습니다

어디 그 코드를 삽입 할 수 있습니까? 모든 페이지에 넣으시겠습니까? 그리고 내 PHP 파일의 맨 처음에? 브라우저가 전체 HTML 코드를 캐시 할까?

캐시가 이미지 파일, CSS 파일에서 사용하는 것과 관련하여 많은 이야기를 들었습니다. 하지만 이미지 파일에 헤더를 추가하고 싶다면 먼저 이미지 파일 요청을 PHP 파일로 유도하는 URL 재 작성이 필요합니까?

답변

2

브라우저 캐시에 관한 캐시라고 가정합니다. 그렇다면 브라우저가 다운로드하는 모든 파일을 추적한다는 점을 알아야합니다. 페이지를 다시 방문하면 브라우저는 먼저 다운로드하려는 파일 (예 : 이미지 또는 CSS 파일)이 컴퓨터에 이미 있고 웹 사이트에서 편집되지 않았는지 확인합니다. 첫 번째 및 두 번째 방문.

브라우저 캐시를 얻으려면 일부 HTTP 헤더를 사용하여 사용자 브라우저가 주어진 파일의 유효성 검사 및 캐시를 수행하는 방법을 제어 할 수 있습니다. 다음과 같이 사용할 수 있습니다.

header("Expires: Mon, 1 Jan 2000 00:00:00 GMT"); 
header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); 
header("Cache-Control: no-cache, must-revalidate"); 
header("Pragma: no-cache"); 

이렇게하면 브라우저가 파일을 캐시하지 않습니다. 브라우저에서 특정 헤더가있는 파일이 제공되는 이유를 이해하기 위해 얻은 결과의 반대 버전을 보여줍니다. 첫 번째 행은 브라우저에 현재 방문중인 파일이 이미 오래된 날짜를 넣어서 만료되었음을 알려줍니다. 앞으로 날짜를 1로 변경하면 반대되는 기능을 사용할 수 있습니다.

다음으로 두 번째 줄은 사용자가 액세스하려는 파일이 마지막으로 편집되었을 때 스크립트가 브라우저에 알릴 수있게합니다. 웹에있는 파일의 최종 수정 날짜가 첫 번째 방문에서 다운로드 한 파일의 내용보다 컴퓨터의 업데이트 날짜보다 오래된 경우 브라우저는 마지막 방문 이후 변경된 것으로 가정하여 파일을 다시 다운로드합니다.

세 번째 줄은 일부 브라우저 (및 일부 프록시)가 파일을 다운로드 할 때 어떻게 작동하는지 설명하는 데 도움이됩니다. 여기에 다른 옵션이 있습니다. 모두 here을 볼 수 있습니다.

그리고 마지막 하나는 이전 시스템과 비슷하지만 이전 시스템의 경우와 비슷합니다. Here's a proper explanation.

그렇지 않으면 또 다른 옵션이 있지만 PHP와 관련이 없습니다. 캐시 제어 헤더를 처리하도록 서버 응용 프로그램을 구성 할 수 있습니다 (PHP를 사용하는 경우 Apache 또는 Nginx라고 가정 함). 모든 것을 다시 작성하거나 PHP 파일로 전달할 필요가 없습니다. 당신의 Nginx를 사용하는 경우 귀하의 사이트를 처리하는 구성의 일부,

# 480 weeks 
<FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$"> 
Header set Cache-Control "max-age=290304000, public" 
</FilesMatch>   

을 또는 : 당신이 아파치를 사용하는 경우

, 당신은 .htaccess 파일이 같은 것을 사용할 수 있습니다 추가 할 수 있음 :

location ~* \.(css|js|gif|jpe?g|png)$ { 
expires 168h; 
add_header Pragma public; 
add_header Cache-Control "public, must-revalidate, proxy-revalidate"; 
} 
+0

답장을 보내 주셔서 감사합니다. 다른 모든 기사에서 이미 읽었습니다. 하지만 혼란 스러울 것은 내 질문에 쓴 것입니다. – user3662467

+0

해당 파일에 헤더를 추가하려면 먼저 PHP와 같은 서버 측 언어를 사용하여 헤더를 처리해야합니다. 그렇다면 URL을 다시 작성해야합니다. –

+0

또 다른 옵션이 있습니다. 서버 소프트웨어를 사용하여 캐시 제어 헤더를 제어 할 수도 있습니다 (Apache 또는 Nginx 일 수있는 PHP를 사용하는 경우). 그렇게하면 파일을 수정할 필요가 없으며 처리 할 PHP에 전달하지 않습니다. .htaccess (아파치를 사용하고있는 경우) 또는 Nginx를 사용하고 있다면 사이트 내에서 사이트 설정을 수정하기 만하면됩니다. 거기에 URL 재 작성과 비슷한 규칙을 사용하여 규칙을 설정할 수 있지만 헤더를 구성하기위한 것입니다. 따라서 CSS로 끝나는 모든 URL에는 다음과 같은 헤더가 있음을 알게 될 것입니다. –