- 자주 쓰이는 문서의 사본을 자동으로 보관하는 HTTP 장치
- 웹 요청이 캐시에 도달했을 때, 캐시된 로컬 사본이 존재할 경우 그 문서는 원 서버가 아니라 그 캐시로부터 제공된다.
- 요청 받기: 커넥션을 통해 활동 감지하고, 들어오는 데이터를 읽어들인다.
- 파싱: 캐싱 소프트웨어가 쉽게 처리할 수 있도록 헤더 부분을 조작하기 쉬운 자료 구조에 담는다.
- 검색: 로컬 사본이 있는지 검사한다.
- 신선도 검사: 사본의 유효 기간을 체크한다. 유효 기간이 지났을 경우 서버로부터 유효 기간을 재검사받는다.
- 응답 생성: 캐시된 서버 응답 헤더를 토대로 응답 헤더를 생성한다.
- 전송: 캐시는 응답을 클라이언트에게 돌려준다.
- 로깅
- 캐시 적중: 캐시 사본이 존재하는 것.
- 캐시 부적중: 캐시 사본이 존재하지 않아 원 서버로 요청을 전달하는 것.
- 문서 만료 확인하기: Cache-Control, Expires 헤더 확인
- 조건부 메서드 사용하기(재검사): If-Modified-Since1(날짜), If-None-Match2(ID).
- 재검사: 캐시 사본이 유효한지 서버로부터 검사받는 것.
- 재검사 결과 캐시 사본이 유효하다면(느린 적중) 크기가 작은 304 Not Modified 응답을 받는다.
- 캐시 사본이 유효하지 않다면 크기가 큰 200 OK 응답을 받는다.
- 서버에 원본이 삭제되었다면 404 Not Found 응답을 받는다. 이 경우 캐시는 사본을 삭제한다.
- no-cache: 항상 서버로부터 재검사받는다.
- no-store: 캐시 사본조차 만들 수 없다.
- max-age: 리소스의 유효 기간(단위: 초). 이 기간이 지나면 재검사를 진행한다.
- Expires: 만료 날짜.
- Must-Revalidate: 캐시 사본이 유효하지 않은 경우 반드시 재검사한다.
1클라이언트 요청의 If-Modified-Since 헤더와 서버 응답의 Last-Modified 항목을 비교한다.
2클라이언트 요청의 tag(If-None-Match 헤더)와 서버 응답의 ETag를 비교한다. HTTP/1.1은 캐시 사본을 무효화하지 않으면서 문서를 수정하도록 하는 약한 검사기 기능을 지원한다.