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 표준  


Copyrightⓒ written by 차재복 (Cha Jae Bok)
"본 웹사이트 내 모든 저작물은 원출처를 밝히는 한 자유롭게 사용(상업화포함) 가능합니다"