웹 캐시
웹 캐시(web cache)는 HTTP로 가져온 응답이나 웹 자원을 저장해 이후 동등한 요청에서 재사용하는 메커니즘이다. 브라우저 내부의 개인 캐시, 공유 프록시 캐시, 콘텐츠 전송 네트워크의 엣지 캐시 등이 이에 해당한다. 재사용할 수 있는 응답은 원본 서버에 다시 요청하지 않고도 제...
| 분류 | HTTP 캐싱 시스템 |
|---|---|
| 주요 용도 | 이전 응답의 재사용을 통한 전송 최적화 |
| 관련 기술 | World Wide Web, 웹 브라우저, HTTP, JavaScript |
| 주요 명세 | RFC 9111: HTTP Caching |
웹 캐시(web cache)는 HTTP로 가져온 응답이나 웹 자원을 저장해 이후 동등한 요청에서 재사용하는 메커니즘이다. 브라우저 내부의 개인 캐시, 공유 프록시 캐시, 콘텐츠 전송 네트워크의 엣지 캐시 등이 이에 해당한다. 재사용할 수 있는 응답은 원본 서버에 다시 요청하지 않고도 제공되므로 지연 시간과 네트워크 대역폭, 서버 부하를 줄이는 효과가 있다.
캐시의 재사용 가능성은 응답 메서드와 상태 코드, 요청 대상, 저장을 금지하는 정책 및 추가 선택 헤더에 따라 판단된다. 기본적인 캐시 키는 요청 메서드와 대상 URI를 포함하며 Vary 헤더는 그 밖에 어떤 요청 헤더가 응답을 구분하는지 나타낸다. 동일한 URL이더라도 사용자별로 결과가 다르면 공유 캐시에 잘못 저장되지 않도록 주의해야 한다.
서버는 Cache-Control 헤더로 캐시 정책을 전달할 수 있다. max-age는 새 응답으로 취급할 기간을 나타내고 no-store는 저장 금지, no-cache는 재사용 전 검증 요구와 관련된다. 응답의 나이를 계산하는 과정에는 Date, Age 및 캐시의 로컬 시간 정보가 관여할 수 있다.
캐시에 저장된 응답이 오래되었을 때는 서버와 재검증을 수행할 수 있다. ETag와 If-None-Match, Last-Modified와 If-Modified-Since를 이용하면 본문이 바뀌지 않은 경우 서버가 304 Not Modified로 알려 전송량을 줄인다. 캐시 무효화와 파일명 버저닝은 변경된 정적 자원이 오래된 내용으로 보이는 문제를 해결하는 데 활용된다.
캐시는 단순한 속도 향상 기능이 아니라 응답의 의미와 개인정보 보호에 영향을 주는 처리 계층이다. 인증된 사용자의 응답을 공유 저장소에 잘못 보관하면 다른 사용자에게 정보가 노출될 수 있고, 캐시 키 오류는 콘텐츠 혼동을 일으킬 수 있다. RFC 9111은 HTTP 응답의 저장과 재사용, 신선도 판단, 검증 및 관련 헤더의 동작을 규정한다.[1]