[HTTP] HTTP Header(캐시 제어 헤더, 프록시 캐시, 캐시 무효화)

Yujeong·2024년 1월 8일
0
post-thumbnail

모든 개발자를 위한 HTTP 웹 기본 지식 강의 수강 후, 정리한 글입니다.

목차

  1. 캐시 제어 헤더
  2. 프록시 캐시
  3. 캐시 무효화

1. 캐시 제어 헤더

1. Cache-Control: 캐시 제어

  • Cache-Control: max-age
    캐시 유효 시간, 초 단위
  • Cache-Control: no-cache
    데이터는 캐시해도 되지만, 항상 원(origin) 서버에 검증하고 사용(중간서버에서 검증하면 안됨)
  • Cache-Control: no-store
    데이터에 민감한 정보가 있으므로 저장하면 안됨(아예 캐시에 저장하면 안됨, 메모리에서만 사용하고 최대한 빨리 삭제)

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

  • Pragma: no-cache
  • HTTP 1.0 하위호환, 지금은 거의 사용하지 않음

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

  • expires: Mon, 08 Jan 2024 00:00:00 GMT
  • 캐시 만료일을 정확한 날짜로 지정
  • HTTP 1.0부터 사용
  • 지금은 더 유연한 Cache-Control: max-age 권장
  • Cache-Control: max-age와 함께 사용하면 Expires는 무시

2. 프록시 캐시

한국에 있는 클라이언트가 미국에 있는 원(origin) 서버에 접근하려면 500ms(0.5초)가 걸린다. 프록시 캐시 서버는 이 둘 사이에 위치하여 캐시된 데이터를 빠르게 가져올 수 있다.
최초 요청 시에는 다운로드 속도가 느리지만, 이후 요청부터는 빠르다.
CDN과 다르긴 하지만, 비슷한 역할을 하는 것 같다.

  • Cache-Control: public
    응답이 public 캐시에 저장되어도 됨
  • Cache-Control: private
    응답이 해당 사용자만을 위한 것임. private 캐시에 저장되어야 함(default)
  • Cache-Control: s-maxage
    프록시 캐시에만 적용되는 max-age
  • Age: 60
    HTTP 헤더, 원 서버에 응답 후 프록시 캐시 내에 머문 시간(초)

3. 캐시 무효화

  • Cache-Control: no-cache
    데이터는 캐시해도 되지만, 항상 원 서버에 검증하고 사용
  • Cache-Control: no-store
    데이터에 민감한 정보가 있으므로 저장하면 안됨
  • Cache-Control: must-revalidate
    캐시 만료 후, 최초 조회시 원 서버에 검증해야 함
    원 서버 접근 실패시 반드시 오류가 발생해야 함 (504 Gateway Timeout)
  • Pragma: no-cache

profile
공부 기록

0개의 댓글