출처
https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC/dashboard
목차
프록시 캐시
원(Origin) 서버 직접 접근
- 계속 미국에 있는 소스를 다운로드 받으면 생각보다 너무 오래 걸립니다. → 프록시 캐시 도입
프록시 캐시
- 요청이 미국에 있는 원 서버가 아니라 DNS를 확인하여 프록시 캐시 서버에 접근하여 데이터를 받습니다.
- 0.5 초 → 0.1 초로 시간 단축
- 여담이지만, 그래서 유튜브에서 미국의 인기 있는 동영상들은 빠르지만 사람들이 잘 찾아보지 않는 영상들은 느립니다. (한국에 있는 서버에서 다운받기 때문)
- 예) CDN 서비스 / AWS의 CloudFront
Public 캐시 , Private 캐시
- 중간에 공용으로 사용되는 캐시를 public 캐시라고 합니다.
- 내 웹 브라우저에서 사용되는 캐시를 private 캐시라고 합니다.
- public 캐시는 보통 처음 캐시에 접근할 땐 느리고 다음 사람이 접근할 땐 빠른 방식을 사용합니다.
- 또는 원 서버에서 캐시 서버로 밀어넣기도 합니다.
Cache-Control (프록시 관련)
- Cache-Control: public
: 응답이 public 캐시에 저장되어도 된다. - Cache-Control: private
: 응답이 해당 사용자만을 위한 것이므로 private 캐시에 저장되어야 한다. (기본값)
ex) 로그인한 정보가 public 캐시에 저장되면 안됩니다. 공용으로 사용하는 이미지는 public 캐시에 저장해도 됩니다. - Cache-Control: s-maxage
: 프록시 캐시에만 적용되는 max-age - Age: 60
: 오리진 서버에서 응답 후 프록시 캐시 내에 머문 시간을 알려줍니다. (단위: 초)
캐시 무효화 방법
웹 브라우저가 데이터를 임의로 캐시를 하는 경우가 많습니다. 아래의 헤더를 모두 넣어야 캐시를 하지 않습니다.
- Cache-Control: no-cache (데이터는 캐시해도 되지만 항상 원 서버에 검증하고 사용해야 한다.)
- Cache-Control: no-store (민감한 정보가 포함되어 있으므로 캐시하면 안 된다. (메모리에서 사용하고 최대한 빨리 삭제)
- Cache-Control: must-revalidate
- 캐시 만료 후 최초 조회 시 원 서버에 검증해야 한다.
- 원 서버 접근 실패 시 반드시 오류가 발생해야 한다. (504 - Gateway Timeout)
- must-revalidate는 캐시 유효 시간이라면 캐시를 사용해야 한다.
- Pragma: no-cache (HTTP 1.0 하위 호환용으로 넣는 헤더)
no-cache vs must-revalidate
no-cache의 기본 동작
no-cache
must-revalidate
'CS > 네트워크' 카테고리의 다른 글
[네트워크] HTTP vs HTTPS | 공개키 vs 대칭키 | SSL 통신 과정 | 전자 서명 (0) | 2023.07.27 |
---|---|
[HTTP] HTTP Header3 (캐시) (0) | 2023.05.07 |
[HTTP] HTTP Header2 (전송 방식, 일반, 특별, 인증(쿠키)) (0) | 2023.05.03 |
[HTTP] HTTP Header1 (표현 Header, 협상 ) (0) | 2023.05.02 |
[HTTP] HTTP 상태 코드 (0) | 2023.04.20 |