HTTP 응답크기를 줄이는 캐시 방식
Last-Modified, If-Modified-Since 헤더를 사용하여 컨텐츠가 변경이 되지 않았다면 304 Not Modified 응답해더만 내려주는 방식으로 응답 크기를 줄임
- 그러나 브라우저가 매번 웹 서버에게 컨텐츠 변경여부를 알기 위해 요청이 이루어짐. 단지 응답 본문을 내리지 않음으로 응답 크기를 줄임
- 주의사항: 동일한 파일명이지만 서버가 여러대일때 각 서버의 파일수정 시간이 동일해야 캐시 효과가 있음. 만약 사용자 요청이 다른 서버로 들어가게 되면 캐싱 효과가 없음.
ETag (Entity Tag)
- HTTP 1.0 에서는 URI와 파일 변경시간을 기반으로 캐시 유효성을 판단하였는데, HTTP 1.1 에서는 ETag 기반으로 항목을 추가하여 유효성 체크도 할수 있음
- ETag 와 If-None-Match 헤더등과 조합하여 컨텐츠 변경 여부를 파악
- 아파치
FileETag
INode: 파일시스템 inode 값
MTime: 파일 변경일자
Size: 파일 사이즈
None: ETag 사용하지 않음
- 버전 2.2 디폴트:
FileETag MTime Size
- 버전 2.4 디폴트:
FileETag INode MTime Size
- 주의사항: INode의 경우 서버마다 값이 다르기 때문에 캐시 효율을 떨어뜨림. 그래서 여러 서버로 분산되는 환경에서는 사용하지 않는 것이 좋음