728x90
apache를 이용한 page cache 방지
사용자가 많이 몰려 이미지 등의 다운로드로 서버 부하가 우려될 경우 잦은 변경이 없는 파일들에 대해서는 캐시할 수 있도록 설정할 수 있다.
하지만 홈페이지를 제작중이거나 수정 작업을 하다보면 리소스(그림파일, 웹문서 등 정적 파일(css, js, html)들이 변경되었는데도 클라이언트 브라우저에서 이를 감지하지 못하는 경우가 있다.
특히 페이지가 .html이라면 캐시를 막는 meta tag를 사용해도 구형 브라우저에서는 이전 페이지를 캐시하는 경우가 많다.
이 경우 사용하는 방법은 아래와 같다.
1. 확장자별 no-caching 설정 방법
<filesMatch "\.(html|htm|js|css)$">
FileETag None
<ifModule mod_headers.c>
Header unset ETag
Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires "Thu, 1 Jan 1970 00:00:00 GMT"
</ifModule>
</filesMatch>
2. 디렉토리별 no-caching 설정 방법
cont/httpd.conf의 해당 Directory 태그에 설정
<Directory /some/real/path/to/tmp>
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>
Pragma : HTTP/1.0 에서의 클라이언트 응답 캐싱 방지
Cache-Control : HTTP/1.1 에서의 클라이언트 응답 캐싱 방지
no-cache : 데이터는 캐시해도 되지만, 항상 원 서버에 검증하고 사용
no-store : 데이터에 민감한 정보가 있으므로 저장하면 안됨(메모리에서 사용하고 최대한 빨리 삭제).캐시저장x.
must-revalidate : 캐시 만료후 최초 조회시 원 서버에 검증해야 함.
원서버 접근 실패시 반드시 오류가 발생해야 함.(504 Gateway timeout).
must-revalidate는 캐시 유효 시간이라면 캐시를 사용함.
ETag : 브라우저가 조건부 요청을 수행하고 캐시 유효성 검사를 효율적으로 수행할 수 있도록 하는 서버 응답 헤더.
코드가 유출될 경우 보안 위험을 초래하고 웹사이트에 대한 캐시 중독 공격이 발생할 수 있기 때문에 웹사이트에 ETag가 필요하지 않은 경우 비활성화하는 것이 좋다.
'WEB > APACHE' 카테고리의 다른 글
12. Apache + Weblogic 연동 (0) | 2023.06.26 |
---|---|
11. Apache + Tomcat 연동 (0) | 2023.06.26 |
9. 크로스 도메인(Cross Domain) (0) | 2023.06.26 |
8. HTTP 상태 코드 (0) | 2023.06.26 |
7. 특정 IP 허용/차단 (0) | 2023.06.26 |