Amazon CloudFront 배포가 객체를 캐싱하는 시간을 지정하려고 Cache-Control 또는 Expires 헤더를 오리진에 추가했습니다. 그런데 CloudFront가 지정한 시간 동안 객체를 캐싱하지 않거나 전혀 캐싱하지 않습니다. 왜 이런 현상이 발생합니까?

Cache-Control 또는 Expires 헤더에서 설정한 명령이 서로 충돌하지 않는지 확인합니다. 모범 사례는, Expires 헤더 대신, Cache-Control max-age 명령을 사용하는 것입니다. 둘 다에 값을 지정한 경우 CloudFront는 Cache-Control max-age에 대해 설정한 값만 사용합니다.

또한 CloudFront 배포에서 설정한 Minimum TTL(최소 TTL), Default TTL(기본 TTL) 및 Maximum TTL(최대 TTL)이 Cache-Control 또는 Expires 헤더와 충돌하지 않는지 확인합니다.

이러한 캐시 기간 설정이 서로 충돌하는 경우 CloudFront는 Cache-Control 또는 Expires 헤더에 설정한 시간 동안 객체를 캐싱하지 않거나 전혀 캐싱하지 않을 수 있습니다. 다음과 같이 캐시 기간 설정이 서로 충돌하는 예는 피하십시오.

  • Maximum TTL(최대 TTL)을 5분(300초)으로 설정하고 Cache-Control max-age 헤더를 1시간(3600초)으로 설정하면 CloudFront는 1시간이 아니라, 5분 동안 객체를 캐싱합니다.
  • Cache-Control max-age 헤더를 3시간으로 설정하고 Expires 헤더를 1개월로 설정하면 CloudFront는 1개월이 아니라, 3시간 동안 객체를 캐싱합니다.
  • Default TTL(기본 TTL), Minimum TTL(최소 TTL) 및 Maximum TTL(최대 TTL)을 0초로 설정하면 CloudFront는 항상 오리진에서 최근 콘텐츠를 검색합니다.

중요: 캐싱 헤더에서 오리진 자산을 업데이트하는 경우 CloudFront가 오리진에 대한 새 요청을 생성한 후에만 CloudFront는 변경 사항을 반영합니다. CloudFront는 엣지 위치에서 캐싱된 자산이 만료되면 오리진에 대한 새 요청을 생성하고 배포에서는 자산에 대한 새 요청을 수신합니다. 캐싱된 자산을 만료하도록 설정하기 전에 CloudFront에서 업데이트를 반영해야 하는 경우 캐시를 무효화할 수 있습니다.


페이지 내용이 도움이 되었습니까? | 아니요

AWS 지원 지식 센터로 돌아가기

도움이 필요하십니까? AWS 지원 센터를 방문하십시오.

게시 날짜: 2018년 4월 9일

업데이트 날짜: 2019년 3월 24일