HTTP 캐시

(2021-07-28)

캐시 , Last-Modified, If-Modified-Since


1. 캐싱 주체별 구분서버 캐싱
     - 캐시 서버    : 캐싱 만을 전용으로하는 서버를 둠
     - 프록시 서버  : 다수의 클라이언트를 대신하여 일을 할 수 있는 서버
  ㅇ 브라우저 캐싱
     - 웹 브라우저  : 웹브라우저 자신이 소속되어있는 로컬 하드디스크캐시 저장


2. 캐시 동작 메커니즘HTTP 메소드캐시 동작 구분
     - GET, HEAD : 캐시 함을 기본으로 함
     - 이외 모든 메소드(POST 등 ) : 캐시 안함을 기본으로 함

  ㅇ 강제 지시에 의한 캐시 동작
     - (pragma: HTTP/1.0) : 프록시 서버클라이언트에 대한 강제 지시
        . 동일 컨텐츠를 이미 저장해 두고 있어도, 원래 웹서버에서 다시 가져오도록 함
           .. 例) pragma: no-cache

  ㅇ 일시를 기준으로 한 캐시 동작
     - (Last-Modified: HTTP/1.0) : 갱신 일시를 기준으로 한 캐시 제어 메커니즘 
        . 웹서버HTTP 응답메세지에 아래 헤더 항목을 포함시켜 보내면,
           .. 例) Last-Modified: Wed, 15 Mar 2017 05:22:47 GMT
        . 후에, 웹브라우저가 해당 URL을 다시 읽을 때는, 위 일시를 아래 처럼 그대로 딸려서 보냄
           .. 例) If-Modified-Since: Wed, 15 Mar 2017 05:22:47 GMT
        . 이때, 웹서버는 보내준 일시와 비교하여,
           .. 해당 컨텐츠가 변경되었으면, 200 OK
           .. 해당 컨텐츠가 변경 안되었으면, 304 Not Modified 를 반환하고, 컨텐츠 본문 미 송출
        . 만일, 304 Not Modified 이면, 
           .. 웹브라우저는 기 저장된 캐시를 사용하여 사용자에게 보여줌

     - (Expires: HTTP/1.0) : 만료 일시(캐시 수명)에 따른 캐시 제어 메커니즘 
        . 아예 캐시의 유효성 확인을 위한 통신도 필요없게 하는 방법
        . 과거 캐시되었던 파일캐시 수명 일시와 비교하여 웹서버 접속 여부 결정
           .. 例) Expires: Wed, 15 Mar 2017 05:22:47 GMT

  ㅇ 갱신 일시가 아닌 파일 해시 값을 기준으로 한 동작
     - (ETag: HTTP/1.1)

  ㅇ HTTP 캐시 제어 메커니즘 (Cache-Control: HTTP/1.1)
     * 웹서버측에서, 보다 유연하게 캐시제어할 수 있도록, HTTP/1.1에서 추가됨 
     - Cache-Control: no-store (아예 캐시 하지 말도록 지시)
     - Cache-Control: no-cache
     - Cache-Control: must-revalidate
     - Cache-Control: max-age=n (캐시의 신선도를 초 단위로 설정)

웹 프로토콜 (HTTP)
   1. HTTP   2. HTTP 메세지   3. HTTP 메소드   4. HTTP 상태코드   5. 프록시   6. 프록시 보안   7. HTTP 캐시   8. 쿠키   9. HTTPS   10. HTTP 표준  


"본 웹사이트 내 모든 저작물은 원출처를 밝히는 한 자유롭게 사용(상업화포함) 가능합니다"