본문 바로가기
웹/책 & 강의

HTTP 완벽가이드 - 7장 (캐시)

by sun__ 2022. 1. 9.

캐시 토폴로지

 

개인 전용 캐시

  • 한 명의 사용자에게만 할당. 작고 저렴
  • 웹브라우저는 개인 전용 캐시를 내장. 자주 쓰는 문서를 개인용 컴퓨터의 디스크와 메모리에 캐시해 둠.

공용 프락시 캐시

  • "캐시 프락시 서버" 혹은 "프락시 캐시"라고 부르는 공유된 프락시서버
  • 계층화해서 레벨1, 2 캐시와 같이 구성할 수도 있다

캐시제어

  • 문서가 만료되기 전까지 얼마나 오랫동안 캐시될 수 있게 할 것인지 서버가 설정할 수 있도록 함.
  • Cache-control: no-store 가 표시된 응답 
    • 캐시가 그 응답의 사본을 만드는 것을 금지
    • 캐시가 검증되지 않은 캐시된 객체로 응답하는 것을 막음
  • Cache-control: no-cache
    • 로컬 캐시 저장소에 저장될 수 있다.
    • 서버와 재검사를 하지 않고서는 캐시에서 클라이언트로 제공될 수 없다.
    • 캐시가 검증되지 않은 캐시된 객체로 응답하는 것을 막음
  • Cache-control: max-age=3600
    • 초단위
    • 캐시가 fresh 하다고 여겨지는 시간 
  •  Cache-control: must-revalidate
    • 일반적으로 캐시는 성능향상을 위해 만료된 객체를 제공하기도 하지만 이와 같은 표시를 하면 캐시가 만료 정보를 엄격하게 따른다.
  •  Expires: Fri, 05 Jul 2002, 05:00:00 GMT
    • 객체가 deprecated되는 만료날짜
  • 아무 만료 정보도 주지 않고, 캐시가 스스로 휴리스틱 방법으로 결정하게 할 수 있다.
    • 응답이 Expires나 max-age헤더 중 어느 것도 포함하지 않고 있다면 휴리스틱 방식으로 최대 나이 계산함.
    • LM알고리즘..

 

위와 같은 캐시제어는 웹서버 설정 파일로 default 설정을 해줄 수 있다.

 

어떤 광고는 광고가 보여질 때마다 과금이 된다. 그런데 광고 객체가 캐싱됐다면 서버에선 몇 번 광고가 보여진지 모를 수 있다. 이에 대한 대응으로 광고 객체를 캐시되지 않도록 처리하는 경우가 왕왕 있었는데, 저자는 바람직하지 않다고 한다. 캐시 서버에서 캐시 적중에 대한 로그를 받아서 과금하는 방식을 사용하는 것이 이상적이라고 한다.