[HTTP] HTTP Header(2) - 캐시와 조건부 요청

sj·2022년 12월 26일

HTTP

목록 보기
9/9

캐시 기본 동작

캐시가 없을 때

  • 데이터가 변경되지 않아도 계속 네트워크를 통해서 데이터를 다운로드 받아야 한다.
  • 인터넷 네트워크는 매우 느리고 비싸다.
  • 브라우저 로딩 속도가 느리다.
  • 느린 사용자 경험

캐시 적용

  • 캐시 덕분에 캐시 가능 시간동안 네트워크를 사용하지 않아도 된다.
  • 비싼 네트워크 사용량을 줄일 수 있다.
  • 브라우저 로딩 속도가 매우 빠르다.
  • 빠른 사용자 경험

max-age: 캐시가 유효한 시간(초)

HTTP/1.1 200 OK Content-Type: image/jpeg
cache-control: max-age=60
Content-Length: 34012

lkj123kljoiasudlkjaweioluywlnfdo912u34ljko98udjkla
slkjdfl;qkawj9;o4ruawsldkal;skdjfa;ow9ejkl3123123

응답 결과를 캐시에 저장

캐시 시간 초과

  • 캐시 유효 시간이 초과하면, 서버를 통해 데이터를 다시 조회하고, 캐시를 갱신한다.
  • 이때 다시 네트워크 다운로드가 발생한다.

검증 헤더와 조건부 요청1

검증 헤더 추가

검증 헤더와 조건부 요청2

검증 헤더 추가

캐시와 조건부 요청 헤더

캐시 제어 헤더

프록시 캐시

캐시 무효화

Cache-Control

캐시 지시어(directives) - 확실한 캐시 무효화

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

no-cache vs. must-revalidate

no-cache

  1. 캐시 서버 요청 no-cache + ETag
  2. 원 서버에 접근할 수 없는 경우 캐시 서버 설정에 따라서 캐시 데이터를 반환할 수 있음 Error or 200 OK(오류 보다는 오래된 데이터라도 보여주자)
  3. 응답 200 OK

must-revalidate

  1. 캐시 서버 요청 must-revalidate + ETag
  2. 원 서버에 접근할 수 없는 경우, 항상 오류가 발생해야 함 504 Gateway Timeout
    (매우 중요한 돈과 관련된 결과로 생각해보자)
  3. 응답 504 Gateway Timeout

0개의 댓글