캐싱 제어 Cache Control

동민·2021년 3월 9일
0
  • 개발자도구 - Network - XHR - Response Headers - Cache-Control

1. 캐시하지 않음

  • 캐시는 클라이언트 요청 혹은 서버 응답에 관해서 어떤 것도 저장해서는 안됨

  • 요청은 서버 측으로 전송되고 전체 응답은 매번 다운로드 됨

  • 로그인 정보와 같은 민감정보 저장 시 캐시하지 않는 것이 좋음

    Cache-Control: no-store
    • CJmall 로그인 정보와 같은 민감정보는 Cache-Control: no-store 옵션으로 캐시에 저장하지 않음

2. 캐시하지만 재검증

  • 캐시된 복사본을 사용자에게 릴리즈 하기 전에, 유효성 확인을 위해 원 서버로 요청을 전송
    Cache-Control: no-cache

3. 사설 캐시와 공개 캐시

  • "public" 디렉티브는 응답이 어떤 캐시에 의해서든 캐시되어도 좋다는 것을 가리킴

  • 이것은 HTTP 인증, 혹은 보통 캐시 가능하지 않은 응답 상태 코드를 지닌 페이지가 이제 캐시되어야 할 경우 유용할 수 있음

  • "private"은 응답이 단일 사용자만을 위한 것이며 공유 캐시에 의해 저장되어서는 안된다는 것을 가리킴

    Cache-Control: private
    Cache-Control: public

4. 만료

  • "max-age=<seconds>"로 리소스가 유효하다고 판단되는 최대 시간을 말함
  • 이 디렉티브는 요청 시간에 상대적이며, Expires가 설정되어 있어도 그보다 우선순위가 높음
  • 변경되지 않을 파일에 대해, (긴 시간으로) 캐싱할 수 있음. ex) 이미지, CSS 파일, JS, HTML 과 같은 정적 파일
    Cache-Control: max-age=31536000
    • 로그인정보와 같은 민감정보는 max-age=0 으로 설정?

5. 검증

  • "must-revalidate" 디렉티브 사용 시, 캐시는 오래된 리소스를 사용하기 전에 그 상태를 확인하고 만료된 리소스는 사용하지 말아야 함
    Cache-Control: must-revalidate
profile
BE Developer

0개의 댓글