CloudFront에서 느린 응답의 지연 시간을 줄이려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2020년 8월 28일

Amazon CloudFront에서 객체나 이미지를 다운로드할 때 지연 시간이 길어집니다. "X-Cache:Miss from cloudfront" 응답을 받는 요청은 "X-Cache:Hit from cloudfront" 응답을 받는 요청보다 로드 속도가 느립니다. 왜 이런 현상이 발생합니까? 이 문제를 해결하려면 어떻게 해야 합니까? 

해결 방법

오리진에 요청을 보내면 CloudFront가 "X-Cache:Miss from cloudfront"를 반환합니다. 가장 가까운 엣지 로케이션에서 요청이 처리되면 CloudFront가 "X-Cache:Hit from cloudfront"를 반환합니다. "Miss" 요청은 오리진에 전달하는 추가 단계로 인해 로드 속도가 느려질 수 있습니다.

요청을 오리진에 전달하는 지연을 방지하려면 다음 사항을 확인하여 CloudFront 엣지 로케이션에서 요청을 처리할 수 있도록 해야 합니다.

  • 모든 헤더, 모든 쿠키 또는 모든 쿼리 문자열을 전달하지 마십시오. 이렇게 하면 CloudFront가 요청을 캐시하는 대신 요청을 통과하도록 지정됩니다.
  • 거의 변경되지 않는 정적 콘텐츠(예: CSS 파일)와 자주 변경되는 동적 콘텐츠(예: JavaScript 파일)에 대해 별도의 캐시 동작이 있는지 확인합니다. 정적 콘텐츠의 경우 오리진이 콘텐츠를 제공하는 데 필요하지 않은 쿠키, 쿼리 문자열 또는 헤더를 기반으로 캐싱하지 마십시오.
    참고: 웹 배포의 경우 기본적으로 CloudFront는 엣지 로케이션에서 객체를 캐시할 때 쿠키를 고려하지 않습니다. 오리진에서 Set-Cookie 헤더의 값만 다른 두 객체를 반환하는 경우 CloudFront는 해당 객체의 한 버전만 캐시합니다.
  • CloudFront가 오리진을 쿼리하기 전에 캐시에서 더 많은 시간이 필요한 경로 패턴에 대해 최소 TTL, 최대 TTL 또는 기본 TTL을 확장합니다.
  • 오리진에서 Cache-Control 헤더를 사용하는 경우 명령이 배포에 설정된 최소 TTL, 최대 TTL 또는 기본 TTL과 일치하는지 확인합니다.
  • 오리진에서 Expires 헤더를 사용하는 경우 헤더에서 필요에 따라 CloudFront가 응답을 캐시할 수 있도록 허용하는지 확인합니다.
  • 오리진 서버가 Date 및 Last-Modified 헤더 필드에 대해 유효하고 정확한 값을 설정하는지 확인합니다.
  • 객체에 대한 무효화 사용을 제한합니다. 필요한 경우에만 무효화를 실행합니다.
  • 객체 요청 빈도를 확인합니다. 객체가 자주 요청되지 않으면 CloudFront가 엣지 로케이션에서 객체를 제거할 수 있습니다.

동적 콘텐츠를 제공하고 요청에 대해 “X-캐시: CloudFront에서 누락됨(X-Cache:Miss from cloudfront)” 응답을 예상하는 경우 캐싱을 사용하지 않고 이러한 요청의 지연 시간을 줄이려면 다음 방법을 고려하십시오.

  • 요청자와 지리적으로 더 가까운 오리진 서버를 더 설정합니다. 그런 다음 이러한 서버로 확인되는 단일 지연 시간 기반 라우팅 DNS 레코드(예: origin-latencybased-dnsrecord.example.com)를 설정합니다. CloudFront에서 DNS 이름(예: origin-latencybased-dnsrecord.example.com)을 배포의 오리진으로 구성합니다. 이 구성을 통해 CloudFront는 요청이 도달하는 엣지 로케이션에 따라 지연 시간이 가장 짧은 오리진 서버에서 콘텐츠를 가져올 수 있습니다. Amazon Route 53을 DNS 공급자로 사용하는 경우 Amazon Route 53에서 지연 시간 기반 라우팅에 다른 리전 추가를 참조하십시오.
  • CloudFront 오리진에 대한 연결 유지 유휴 시간 제한을 늘립니다. 이 값은 CloudFront가 연결이 끊기기 전에 오리진 서버와의 유휴 연결을 유지 관리하는 시간을 지정합니다. 기본 연결 유지 유휴 시간 제한은 5초이지만 오리진 서버에서 지원하는 경우 최대 60초까지 더 높은 값을 설정할 수 있습니다. 배포에서 동적 콘텐츠에 대한 요청을 오리진에 전달하는 경우 시간 제한 값을 늘리면 CloudFront가 모든 요청에 대해 새 연결을 생성할 필요가 없으므로 지연 시간을 줄일 수 있습니다.
    참고: 오리진에는 여러 개의 IP 주소가 할당될 수 있습니다. 여러 오리진 IP 주소에서 지속적인 연결을 사용하기 위해 CloudFront는 더 높은 요청 속도와 증가하는 요청 빈도에 의존합니다. 이는 요청이 오리진 IP 주소에 걸쳐 라운드 로빈을 라우팅하고 각 IP 주소에 대해 연결이 지속되기 때문입니다.