Skip to content

Latest commit

 

History

History
42 lines (36 loc) · 2.42 KB

File metadata and controls

42 lines (36 loc) · 2.42 KB

7장 - 캐시

캐시

  • 자주 쓰이는 문서의 사본을 자동으로 보관하는 HTTP 장치
  • 웹 요청이 캐시에 도달했을 때, 캐시된 로컬 사본이 존재할 경우 그 문서는 원 서버가 아니라 그 캐시로부터 제공된다.

캐시 처리 단계

  1. 요청 받기: 커넥션을 통해 활동 감지하고, 들어오는 데이터를 읽어들인다.
  2. 파싱: 캐싱 소프트웨어가 쉽게 처리할 수 있도록 헤더 부분을 조작하기 쉬운 자료 구조에 담는다.
  3. 검색: 로컬 사본이 있는지 검사한다.
  4. 신선도 검사: 사본의 유효 기간을 체크한다. 유효 기간이 지났을 경우 서버로부터 유효 기간을 재검사받는다.
  5. 응답 생성: 캐시된 서버 응답 헤더를 토대로 응답 헤더를 생성한다.
  6. 전송: 캐시는 응답을 클라이언트에게 돌려준다.
  7. 로깅

캐시 적중과 부적중

  • 캐시 적중: 캐시 사본이 존재하는 것.
  • 캐시 부적중: 캐시 사본이 존재하지 않아 원 서버로 요청을 전달하는 것.

사본을 신선하게 유지하기

  1. 문서 만료 확인하기: Cache-Control, Expires 헤더 확인
  2. 조건부 메서드 사용하기(재검사): If-Modified-Since1(날짜), If-None-Match2(ID).

  • 재검사: 캐시 사본이 유효한지 서버로부터 검사받는 것.
  • 재검사 결과 캐시 사본이 유효하다면(느린 적중) 크기가 작은 304 Not Modified 응답을 받는다.
  • 캐시 사본이 유효하지 않다면 크기가 큰 200 OK 응답을 받는다.
  • 서버에 원본이 삭제되었다면 404 Not Found 응답을 받는다. 이 경우 캐시는 사본을 삭제한다.

캐시 제어

  1. no-cache: 항상 서버로부터 재검사받는다.
  2. no-store: 캐시 사본조차 만들 수 없다.
  3. max-age: 리소스의 유효 기간(단위: 초). 이 기간이 지나면 재검사를 진행한다.
  4. Expires: 만료 날짜.
  5. Must-Revalidate: 캐시 사본이 유효하지 않은 경우 반드시 재검사한다.

1클라이언트 요청의 If-Modified-Since 헤더와 서버 응답의 Last-Modified 항목을 비교한다.
2클라이언트 요청의 tag(If-None-Match 헤더)와 서버 응답의 ETag를 비교한다. HTTP/1.1은 캐시 사본을 무효화하지 않으면서 문서를 수정하도록 하는 약한 검사기 기능을 지원한다.