몇 주 전에 Amazon은 콘텐츠 만료 기간을 줄 였다고 발표했습니다.
Amazon CloudFront, 최소 콘텐츠 만료 기간 단축
실제로 CloudFront의 TTL을 0으로 설정할 수 있습니다. 제 질문은 TTL이 0으로 설정된 CloudFront 배포를 사용하는 것이 왜 유용할까요? 원점에 도달하게됩니다.
내가 무엇을 놓치고 있습니까?
몇 주 전에 Amazon은 콘텐츠 만료 기간을 줄 였다고 발표했습니다.
Amazon CloudFront, 최소 콘텐츠 만료 기간 단축
실제로 CloudFront의 TTL을 0으로 설정할 수 있습니다. 제 질문은 TTL이 0으로 설정된 CloudFront 배포를 사용하는 것이 왜 유용할까요? 원점에 도달하게됩니다.
내가 무엇을 놓치고 있습니까?
답변:
Amazon CloudFront 의이 새로운 기능 은 실제로 많은 사용 사례에 매우 유용 합니다. 오리진에 도달하는 것은 첫눈에 보이는 것과는 약간 다르며 반대로 반드시 문제가되지 않기 때문입니다. 이 기능은 이미 이전에 출시되었지만 Amazon CloudFront-동적 콘텐츠 지원 의 최신 릴리스와 함께 제공됩니다 .
가변 TTL (Time-To-Live) -대부분의 경우 동적 콘텐츠는 매우 짧은 시간 (아마도 몇 초) 동안 캐시 할 수 없거나 캐시 할 수 없습니다. 과거에는 모든 콘텐츠가 정적으로 간주되었으므로 CloudFront의 최소 TTL은 60 분이었습니다. 새로운 최소 TTL 값은 0 초입니다. 특정 오리진에 대한 TTL을 0으로 설정하면 CloudFront는 여전히 해당 오리진 의 콘텐츠 를 캐시합니다 . 그런 다음 If-Modified-Since 헤더를 사용하여 GET 요청 을 수행하여 오리진에서 변경되지 않은 경우 CloudFront에서 캐시 된 콘텐츠를 계속 사용할 수 있음 을 오리진에 알릴 기회를 제공합니다 . [강조 내]
즉, 0의 TTL을 사용한다는 것은 기본적으로 CloudFront가 캐시 제어 권한을 오리진에 위임한다는 것을 의미합니다. 즉, 오리진 서버가 CloudFront에서 객체를 캐시하는 기간과 캐시 제어 여부를 결정합니다. 특히, If-Modified-Since 헤더 가 있는 GET 요청 은 객체 자체가 오리진에서 검색된다는 것을 반드시 의미하는 것은 아니며 오리진이 HTTP 상태 코드 304-수정되지 않음 ( 해당되는 경우)을 반환 할 수 있고 반환해야 함을 의미합니다. :
마지막 요청 이후 자원이 수정되지 않았 음을 나타냅니다. [...] 이것을 사용하면 서버와 클라이언트 모두에서 대역폭과 재 처리가 절약 됩니다. 서버에서 재 처리되는 페이지 전체와 비교 하여 헤더 데이터 만주고받은 다음 더 많은 대역폭을 사용하여 다시 전송해야하기 때문입니다. 서버와 클라이언트의. [내 강조]
HTTP 아키텍처의 매우 중요하고 효과적인 부분 인 HTTP 캐시 제어의 메커니즘과 이점에 대한 자세한 내용 은 Mark Nottingham의 뛰어난 캐싱 자습서 를 참조하십시오.
이러한 모든 부분이 함께 작동하는 방식을 이해하는 것은 실제로 약간 어려울 수 있습니다. 따라서 CloudFront 엣지 캐시에 객체가 머무르는 기간 지정 (객체 만료) 내에서 CloudFront가 다운로드 배포를 위해 객체를 캐싱하는 최소 시간 지정 섹션의 표에서 효과를 요약하려고 시도합니다. 특히 TTL = 0이 있거나없는 CloudFront의 컨텍스트에 적용될 때.
Amazon은 "TTL이 0"이 아니라 "최소 TTL이 0"이라는 점에 유의하십시오. 그리고 그것은 매우 다릅니다. 위의 설명은 매우 바람직하지만 Cloudfront가 실제로 수행한다는 보장은 없습니다.
지금의 경험상 캐시 된 이미지가 가장자리에 몇 분 동안 머무르는 것을 볼 수 있지만 원본은 이미 변경되었습니다.
따라서 "최소 TTL은 0"이라는 말은 "Amazon은이를 캐시에 보관하려는 엄격한 의도가 없습니다"와 비슷하며 "자주 다시 가져올 것"이라고 생각합니다.
웹 사용자가 새로운 콘텐츠를 게시하는 CMS와 같은 애플리케이션의 경우 TTL-0만으로는 충분하지 않다고 생각합니다. 여전히 CMS에서 무효화를 호출하거나 다른 버전 번호에 대해 다른 경로를 사용해야합니다.
CloudFront를 인증서 관리자와 함께 사용하여 S3 웹 사이트에 HTTPS 지원을 추가 할 수 있습니다. 이것을 원할 수도 있지만 캐싱은 없습니다.
이에 대한 또 다른 사용 사례는 lambda edge https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/lambda-at-the-edge를 사용하여 캐시 할 수없는 콘텐츠에 대한 요청의 헤더를 조작하려는 경우 입니다. html . 예 x-api-key
.