Amazon CloudFront에서 지정한 시간 동안 파일을 캐싱하지 않는 이유는 무엇입니까?

2분 분량
0

Amazon CloudFront 배포에서 객체를 캐시하는 시간을 지정하고 싶어서 오리진에 Cache-Control 또는 Expires 헤더를 추가했습니다. 하지만 CloudFront가 지정한 시간 동안 객체를 캐싱하지 않거나 CloudFront가 전혀 캐싱하지 않습니다.

해결 방법

Cache-Control 또는 Expires 헤더에 설정한 디렉티브가 서로 충돌하지 않는지 확인합니다. Cache-Control max-age 지시문을 Expires 헤더 대신 사용하는 것이 가장 좋습니다. 두 값을 모두 지정하는 경우 CloudFront는 Cache-Control max-age에 대해 설정한 값만 사용합니다.

CloudFront 배포에 설정한 최소 TTL, 기본 TTL, 최대 TTLCache-Control 또는 Expires 헤더와 충돌하지 않는지 확인하세요.

이러한 캐시 기간 설정이 서로 충돌하는 경우 CloudFront가 설정된 시간 동안 객체를 캐싱하지 않거나 CloudFront가 전혀 캐싱하지 않을 수 있습니다. 캐시 기간 설정이 서로 충돌하는 다음과 같은 예는 피하세요.

  • 최대 TTL은 5분(300초)으로 설정되고 Cache-Control max-age 헤더는 1시간(3600초) 으로 설정됩니다. 이 경우 CloudFront는 객체를 1시간이 아닌 5분 동안 캐시합니다.
  • Cache-Control max-age 헤더는 3시간으로 설정되고 Expires 헤더는 1개월로 설정됩니다. 이 경우 CloudFront는 객체를 1개월이 아닌 3시간 동안 캐싱합니다.
  • 기본, 최소 및 최대 TTL은 0초로 설정되어 있습니다. 이 경우 CloudFront는 항상 오리진의 최신 콘텐츠가 있는지 확인합니다.
  • 최소 TTL은 60초로 설정되고, 기본 TTL은 300초로 설정되며, 최대 TTL은 3600초로 설정되어 있습니다. 오리진에서 캐시 헤더(예: Cache-Control max-age 또는 Expires)를 제공하지 않는 경우 CloudFront는 기본 TTL 기간 동안 객체를 캐싱합니다.

**중요:**캐시 헤더로 오리진 자산을 업데이트하는 경우 CloudFront는 CloudFront가 오리진에 새 요청을 보낸 후에만 변경 사항을 반영합니다. CloudFront는 엣지 로케이션에서 캐시된 자산이 만료되면 오리진에 새로운 요청을 보냅니다. 그러면 배포가 자산에 대한 새 요청을 수신합니다. 캐시된 자산이 만료되도록 설정되기 전에 CloudFront에 업데이트가 반영되도록 하려면 캐시를 무효화하세요.

관련 정보

객체 캐싱

콘텐츠가 캐시에 보관되는 기간 관리(만료)

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

AWS 공식
AWS 공식업데이트됨 7달 전