사용자가 많이 몰려 이미지 등의 다운로드로 서버 부하가 우려될 경우 잦은 변경이 없는 파일들에 대해 cache할 수 있도록 설정 할 수 있습니다.
cache하는 시간(초단위)도 설정할 수 있으며,
FileEtag옵션을 이용하여 파일의 MTIME, Size의 변경이 있을 경우엔 cache되어 있더라도 다시 다운로드 받을 수 있도록 설정할 수 있습니다.
(예)
<IfModule mod_headers.c> <FilesMatch “.(css|jpg|jpeg|gif|png|ico|swf|flv|cab|bmp|svg)$”> Header set Cache-Control “max-age=36000, public, must-revalidate” </FilesMatch> FileETag MTime Size </IfModule> |
위 예는 css,jpg,jpeg,gif,png,ico,swf,flv,cab,bmp,svg 확장자를 가진 파일을 10시간 동안 파일에 변화가 없으면 캐싱하게 됩니다.
하지만 홈페이지를 제작 중이거나 수정 작업을 하다 보면, resource(그림파일, 웹문서 등) 들이 변경 되었는데도, client browser 에서 이를 감지 하지 못해서
애를 먹는 경우가 많습니다.
특히 페이지가 .html 이라면, 아무리 캐쉬를 막는 meta tag를 사용해도 구형 브라우저에서는
이전 페이지를 캐쉬 하는 경우가 많습니다.
이럴 경우 아래와 같이 apache config 를 추가 해 주면 해결이 됩니다.
response header 에 cache control 을 조정하는 것으로 가능합니다.
<Directory /경로> Header Set Pragma “no-cache” Header Set Expires “Thu, 1 Jan 1970 00:00:00 GMT” Header Set Cache-Control “max-age=0, no-store, no-cache, must-revalidate” Header Unset ETag FileETag None </Directory> |