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

최종 업데이트 날짜: 2022년 1월 13일

객체 또는 이미지를 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 주소에 대해 연결이 지속되기 때문입니다.