CloudFront 와 Browser cache
Cloud front 란?
https://docs.aws.amazon.com/ko_kr/AmazonCloudFront/latest/DeveloperGuide/Introduction.html
cloud front 설정의 cache 의 TTL 을 설정할때 min, max default 값이 있따는 것은 Origin (s3) 에서 보낸 Metadata 의 Cache-Control 값을 존중해서 사용한다는 뜻입니다.
cloud front 의 Min 보다 작은 값을 Origin 에서 보내오면 min 값을 TTL 값으로 사용하겠다는 뜻이며, cloud front 의 max 값 보다 큰 값을 Origin 에서 보내오면 max 값을 TTL 값으로 사용한다는 뜻입니다.
또한, Origin 에서 특정한 Cache-Control 값이 없으면 Default 값을 사용한다는 뜻입니다.
TTL 이 긴데도 불구하고 Cache Miss 가 나는 경우
- 처음 요청하는 Object 인 경우
- 해당 Region 의 edge 서버 들에 부하가 있어 다른 region 으로 라우팅 되었을 경우
- cache 는 region 별로 달리 저장되기 때문에 다른 region 으로 라우팅 되면 miss 가 발생 할 수 있음
동작방식
cloud front 의 설정은 origin server 의 데이터를 캐싱하는 설정이고 client 에서 ttl 시간 내에 반복적으로 보내온 요청을 origin server 에 물어보지 않고 바로 cloud front 가 처리함
web browser 가 캐싱 했다가 cf 에 다시 요청해야 하는 기간 TTL 이 만료되고 브라우저에서 CF 로 요청 CF 에 캐싱이 없으면
origin server 로 요청 customize 로 설정되어 있는 경우 origin server 의 cache control 을 최대한 존중
Use origin cache headers 일 경우 cache-control 을 그대로 사용
Status code [200, 304]
200 - hit from cloud front
304 - hit from cloud front
AWS 문서에 따르면 cache-control 이 없으면 browser 에 대한 cache 는 browser 마다 각각 다르다.
CF 설정은 TTL 은 cloud front 단에서 관리하는 캐시 설정이므로 browser 에서 캐싱이 만료되면 cf로 요청한다.
CF 에서 아직 캐싱이 유요하다면 cache hit 이고 cloud front 에 캐싱 된 object etag 와 비교하여 변경된게 없으면 304 status 를 response 한다.
Browser Request Header
- cache-control: max-age=0
- if-modified-since: Tue, 27 Sep 2022 02:37:48 GMT
- if-none-match: "7ajsdklfjalskdnvklznxcklvjlzdksjfkla"
본 헤더의 의미는 Browser에 컨텐츠가 캐시되어 있으며, Browser에 캐시된 컨텐츠를 사용하기 위해 유효한지 확인을 위해 브라우저->CloudFront로 유효성 검사 요청입니다.
(if-modified-since, if-none-match은 이전에 컨텐츠가 수신/캐시되었을때 응답 헤더에서 확인된 Last-modified, Etag 값 이용)
CloudFront에서는 유효성 검사시 위의 값을 비교하여 결과가 유효한 경우 304 Not modified로 응답 헤더만 전달하며,
유효하지 않은 경우 200 OK로 신규 컨텐츠 전달합니다.
해당 요청을 보낸 주체는 Browser이며, 그 요청을 수신하여 맞는 응답을 전달한 것은 CloudFront의 PoP입니다.
'Cloud > AWS' 카테고리의 다른 글
AWS lambda 와 media convert 를 사용하여 HLS 변환하기 (0) | 2022.11.01 |
---|---|
AWS - EC2 Volume 확장하기 (0) | 2022.04.27 |
AWS- VPC, Routing table, Internet Gateway 설정하기 (0) | 2022.03.19 |
Aws - EC2 로 배포하고 Https 도메인 등록하기 (Route53, 로드밸런스, Certificate Manager) (0) | 2022.02.24 |
EC2 에 HTTPS 로 도메인 연동하기 (Nginx) (0) | 2022.02.23 |
댓글
이 글 공유하기
다른 글
-
AWS lambda 와 media convert 를 사용하여 HLS 변환하기
AWS lambda 와 media convert 를 사용하여 HLS 변환하기
2022.11.01 -
AWS - EC2 Volume 확장하기
AWS - EC2 Volume 확장하기
2022.04.27 -
AWS- VPC, Routing table, Internet Gateway 설정하기
AWS- VPC, Routing table, Internet Gateway 설정하기
2022.03.19 -
Aws - EC2 로 배포하고 Https 도메인 등록하기 (Route53, 로드밸런스, Certificate Manager)
Aws - EC2 로 배포하고 Https 도메인 등록하기 (Route53, 로드밸런스, Certificate Manager)
2022.02.24