[amazon-web-services] CloudFront의 TTL 0은 무엇에 유용합니까?

몇 주 전에 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.


답변