브라우저 캐시에 관한 캐시라고 가정합니다. 그렇다면 브라우저가 다운로드하는 모든 파일을 추적한다는 점을 알아야합니다. 페이지를 다시 방문하면 브라우저는 먼저 다운로드하려는 파일 (예 : 이미지 또는 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";
}
답장을 보내 주셔서 감사합니다. 다른 모든 기사에서 이미 읽었습니다. 하지만 혼란 스러울 것은 내 질문에 쓴 것입니다. – user3662467
해당 파일에 헤더를 추가하려면 먼저 PHP와 같은 서버 측 언어를 사용하여 헤더를 처리해야합니다. 그렇다면 URL을 다시 작성해야합니다. –
또 다른 옵션이 있습니다. 서버 소프트웨어를 사용하여 캐시 제어 헤더를 제어 할 수도 있습니다 (Apache 또는 Nginx 일 수있는 PHP를 사용하는 경우). 그렇게하면 파일을 수정할 필요가 없으며 처리 할 PHP에 전달하지 않습니다. .htaccess (아파치를 사용하고있는 경우) 또는 Nginx를 사용하고 있다면 사이트 내에서 사이트 설정을 수정하기 만하면됩니다. 거기에 URL 재 작성과 비슷한 규칙을 사용하여 규칙을 설정할 수 있지만 헤더를 구성하기위한 것입니다. 따라서 CSS로 끝나는 모든 URL에는 다음과 같은 헤더가 있음을 알게 될 것입니다. –