본문 바로가기
Develop/CS

HTTP 헤더 - 캐시, 조건부 요청

by 연로그 2021. 2. 16.
반응형

일반 헤더> yeonyeon.tistory.com/44?category=925906

쿠키, 캐시, 세션 차이> yeonyeon.tistory.com/6?category=925906

 

목차

 

1. 캐시

2. 검증 헤더와 조건부 요청

3. 프록시 캐시

 


1. 캐시

캐시 적용 전

  • 같은 데이터를 네트워크를 통해 계속 다운받게 됨
  • 네트워크: slow, expensive -> 브라우저 로딩 속도 ↓-> 느린 사용자 경험

 

캐시 적용 후

  • 캐시 가능 시간 동안 네트워크를 사용하지 않아도 됨
  • 브라우저 로딩 속도 ↑ -> 빠른 사용자 경험
  • 단, 캐시 유효 시간이 초과되면 서버를 통해 데이터 다시 조회+캐시 갱신
  • Cache-controle: max-age=60    // 캐시의 유효 시간은 60초이다. (60초 후에는 서버에서 가져옴)
  • Last-Modified: 2020년 11월 11일 11:11:11   // 수정일 비교 후 수정사항 없으면 파일 브라우저 캐시에서 가져옴

 

2. 검증 헤더와 조건부 요청

  • 캐시 유효 시간이 초과해도 서버의 데이터가 갱신되지 않을 경우 304 Not Modified + 헤더 메타 정보만 응답. (body 제외)
  • client는 서버가 보낸 응답 헤더 정보를 이용해 캐시에 저장된 데이터 재활용.
  • last-modified, if-modified-since: 날짜 비교. 1초 미만 x.
  • etag, if-none-match: etag 비교.

 

검증 헤더

  • last-modified, Etag
  • 캐시 데이터와 서버 데이터가 같은지 검증하는 데이터

 

조건부 요청

  • if-modified-since, if-none-match
  • 조건 만족: 200 OK
  • 조건 불만족: 304 Not Modified

 

캐시 제어 헤더

  • Cache-Controle: 캐시 제어
  • Pragma: 캐시 제어 (하위 호환)
  • Expires: 캐시 유효 기간 (하위 호환)

 

Cache-Control

  • max-age: 유효 시간 (초 단위)
  • no-cache: 데이터 캐시 가능. origin 서버에 검증하고 사용.
  • no-store: 저장 불가 (민감 정보 존재)
  • must-revalidate: 캐시 만료 후 최초 조회 시 원 서버에 검증 (원 서버 접근 실패시 504 오류)
  • public: public 캐시에 저장 가능
  • private: 해당 사용자만을 위한 것 (default)
  • s-maxage: 프록시 캐시에만 적용되는 max-age

 

3. 프록시 캐시

프록시 캐시 도입 전/후

before / after

  • 미국 서버의 파일을 받으려고 한다. 원래라면 사람 한 명당 0.5초를 기다려야 한다. 한국 어딘가에 프록시 서버를 설치한다면 클라이언트들은 프록시 서버를 통해 0.1초만에 파일을 받을 수 있다.

 


본 글은 김영한님의 유료 강의를 들으며 요약, 정리를 목적으로 작성한 것으로 홍보나 금전적 목적이 없습니다.
제 방식으로 정리한 것으로 강의 내용을 추가/삭제/변경된 부분이 많으며 자세한 설명은 강의 구매를 추천 드립니다.
 
모든 개발자를 위한 HTTP 웹 기본 지식 / 김영한 / inflearn

inf.run/PHpy

www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC

 

모든 개발자를 위한 HTTP 웹 기본 지식 - 인프런

실무에 꼭 필요한 HTTP 핵심 기능과 올바른 HTTP API 설계 방법을 학습합니다. 초급 웹 개발 기타 네트워크 웹 개발 Back-End 온라인 강의 프론트엔드/백엔드, 웹/모바일 앱 개발 등 웹 기술을 사용하는

www.inflearn.com

 

반응형

'Develop > CS' 카테고리의 다른 글

[AWS RDS] Mysql에서 variables 설정 바꾸기  (0) 2021.03.11
[Linux] sudo: cd: command not found  (0) 2021.03.05
HTTP 헤더 - 일반 헤더  (0) 2021.02.04
HTTP 상태 코드  (0) 2021.02.01
HTTP 메소드와 API 설계  (0) 2021.02.01