CloudFront에서 오류를 캐싱하는 기간 제어 - Amazon CloudFront

CloudFront에서 오류를 캐싱하는 기간 제어

CloudFront는 오류 응답을 기본 기간인 10초 동안 캐싱합니다. 그런 다음 CloudFront는 객체에 대한 다음 요청을 오리진에 제출하여 오류를 일으킨 문제가 해결되었고 요청된 객체를 사용할 수 있는지 확인합니다.

CloudFront에서 캐싱하는 4xx 및 5xx 상태 코드 각각에 대해 오류 캐싱 기간(오류 캐싱 최소 TTL(Error Caching Minimum TTL))을 지정할 수 있습니다. (자세한 설명은 CloudFront가 캐싱하는 HTTP 4xx 및 5xx 상태 코드 섹션을 참조하십시오.) 기간을 지정할 때는 다음 사항에 유의하십시오.

  • 짧은 오류 캐싱 기간을 지정하는 경우, CloudFront에서는 더 긴 기간을 지정하는 경우에 비해 오리진에 더 많은 요청을 전달합니다. 5xx 오류의 경우, 이는 원래 오리진에서 오류를 반환하게 만든 문제를 악화시킬 수 있습니다.

  • 오리진에서 객체에 대한 오류를 반환할 경우, CloudFront에서는 오류 캐싱 기간이 경과할 때까지 객체에 대한 요청에 오류 응답이나 사용자 지정 오류 페이지로 응답합니다. 오류 캐싱 기간을 길게 지정한 경우, CloudFront에서는 객체가 다시 사용 가능한 상태가 된 후에도 장시간 오류 응답이나 사용자 지정 오류 페이지로 요청에 계속해서 응답할 수 있습니다.

참고

HTTP 상태 코드 416(요청된 범위를 충족할 수 없음)에 대한 사용자 지정 오류 페이지를 만들 수 있으며 오리진에서 CloudFront로 상태 코드 416을 반환할 경우 CloudFront에서 최종 사용자로 반환하는 HTTP 상태 코드를 변경할 수 있습니다. (자세한 내용은 CloudFront에서 반환하는 응답 코드 변경 섹션을 참조하세요.) 그러나 CloudFront에서는 상태 코드 416 응답을 캐싱하지 않습니다. 따라서 상태 코드 416에 대해 [오류 캐싱 최소 TTL(Error Caching Minimum TTL)]의 값을 지정하더라도 CloudFront에 이 값이 사용되지 않습니다.

CloudFront에서 개별 객체에 대한 오류를 캐싱하는 시간을 제어하려는 경우, 다음과 같이 관련 헤더를 해당 객체에 대한 오류 응답에 추가하도록 오리진 서버를 구성할 수 있습니다.

오리진에서 Cache-Control: max-age 또는 Cache-Control: s-maxage 명령이나 Expires 헤더를 추가하는 경우: CloudFront에서는 헤더의 값과 오류 캐싱 최소 TTL(Error Caching Minimum TTL)의 값 중 더 큰 값 동안 오류 응답을 캐싱합니다.

참고

Cache-Control: max-age 값과 Cache-Control: s-maxage 값은 오류 페이지를 가져오는 캐시 동작에 대해 설정된 최대 TTL 값보다 클 수 없습니다.

오리진에서 다른 Cache-Control 명령을 추가하거나 헤더를 추가하지 않는 경우: CloudFront에서는 오류 캐싱 최소 TTL(Error Caching Minimum TTL)의 값 동안 오류 응답을 캐싱합니다.

객체에 대한 4xx 또는 5xx 상태 코드의 만료 시간이 원하는 시간보다 더 긴 경우 객체를 다시 사용할 수 있게 될 때 요청된 객체의 URL을 사용하여 캐싱된 오류 코드를 무효화할 수 있습니다. 오리진에서 여러 객체에 대한 오류 응답을 반환하려는 경우, 각 객체를 개별적으로 무효화해야 할 수 있습니다. 객체 무효화에 대한 자세한 내용은 파일을 무효화하여 콘텐츠 제거 단원을 참조하십시오.