ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • HTTP(7) - HTTP 헤더 (캐시 제어 헤더, 프록시 캐시, 캐시 무효화)
    스프링/HTTP 기본 지식 2023. 2. 7. 14:16

    캐시 제어 헤더

     

    1. Cache-Control : 캐시 제어

    2. Pragma : 캐시 제어(하위 호환)

    3. Expires : 캐시 유효 기간(하위 호환)

     

    1. Cache-Control

    Cache-Control: max-age

    - 캐시 유효시간, 초 단위

    Cache-Control: no-cache

    - 데이터는 캐시해도 되지만, 항상 원 서버에 검증하고 사용 (if-none-modified 등을 통해 항상 검증을 먼저 해야함)

    Cache-Control: no-store

    - 데이터에 민감함 정보가 있으므로 저장하면 안됨 (메모리에서 사용하고 최대한 빨리 삭제)

     

    2. Pragma

    Pragma: no-cache처럼 사용하는데 거의 사용하지 않음

     

    3. Expires

    expires: Mon, 01 Jan 1990 00:00:00 GMT

     

    - 캐시 만료일을 정확한 날짜로 지정

    - 하지만 초단위로 계산하는 Cache-Control: max-age를 권장해서 지금은 Expires를 거의 사용하지 않음

     

     

    프록시 캐시

     

    원 서버 직접 접근 - 미국의 원 서버를 직접 접근하려면 너무 오랜 시간이 걸린다

     

    프록시 캐시 도입

    한국 어딘가에 프록시 캐시 서버를 넣어놓고 미국에 있는 원 서버에 직접 접근이 아니라 프록시 캐시 서버를 통해 접근하도록 한다.

     

    캐시를 만드는데 개인 웹 브라우저가 아니라 한국이 공통으로 사용하는 public한 공통 캐시를 만들어서 거기에 접근하도록 한다.

     

    캐시 지시어

    Cache-Control: public

    - 응답이 public 캐시에 저장되어도 됨

    Cache-Control: private

    - 응답이 해당 사용자만을 위한 것임, private 캐시에 저장해야 함

    Cache-Control: s-maxage

    - 프록시 캐시에만 적용되는 max-age

     

     

    캐시 무효화

     

    Cache-Control : 확실한 캐시 무효화 응답

    캐시 요청을 안해도 웹 브라우저가 임의로 캐시를 해버릴 수도 있다.

     

    캐시를 하면 안되는 페이지가 있으면

    Cache-Control: no-cache, no-store, must-revalidate를 넣어줘야한다.

     

    1. Cache-Control: no-cache

    - 데이터는 캐시해도 되지만 항상 원 서버에 검증하고 사용

     

    2. Cache-Control: no-store

    - 데이터에 민감한 정보가 있으므로 저장하지 말고 메모리에서 사용하고 최대한 빨리 삭제

     

    3. Cache-Control: must-revalidate

    - 캐시 만료후 최초 조회시 원 서버에 검증해야함

    - 원 서버 접근 실패시 반드시 오류가 발생함 - 504(Gateway Timeout)

Designed by Tistory.