배경
CloudFront가 맨 위에있는 S3에서 정적 사이트를 호스팅하고 있습니다. 내가 가진 문제는 HTML 파일과 관련이 있습니다.
CloudFront의 FAQ 에 따르면 :
Amazon CloudFront는 이러한 캐시 제어 헤더를 사용하여 해당 파일의 업데이트 된 버전에 대한 출처를 확인해야하는 빈도를 결정합니다.
내가 지금까지 한 일
이를 염두에두고 S3 Bucket에서 HTML 파일을 설정하여 다음 헤더를 추가했습니다.
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Expires: Fri, 01 Jan 1990 00:00:00 GMT
내에 대한 첫 번째 호출 samplefile.htm
에서 다음과 같은 응답 헤더가 표시됩니다 (예를 들어 명백한 헤더를 제외했습니다 (예 Content-Type
:).
Cache-Control:no-cache, no-store, max-age=0, must-revalidate
Date:Sat, 10 Dec 2011 14:16:51 GMT
ETag:"a5890ace30a3e84d9118196c161aeec2"
Expires:Fri, 01 Jan 1990 00:00:00 GMT
Last-Modified:Sat, 10 Dec 2011 14:16:43 GMT
Server:AmazonS3
X-Cache:Miss from cloudfront
보시다시피 내 Cache-Control
헤더가 있습니다. 문제는이 파일을 업데이트하고 새로 고치면 최신 파일이 아닌 캐시 된 컨텐츠를 가져오고 CloudFront가 응답 헤더를보고 캐시 된 버전을 제공하고 있음을 알 수 있습니다.
X-Cache:Hit from cloudfront
요약 / 질문
위의 사항을 염두에두고 CloudFront를 사용할 때 최신 HTML을 자동으로 검색하려면 어떻게해야합니까?
FAQ에 따라 Cache-Control 헤더 로이 작업을 수행 할 수 있어야하지만이 작업을 수행 할 수없는 것 같습니다.
아래 답변에 따라
결국 나는 S3 버킷을 직접 가리 키도록 www CNAME을 변경하기로 결정했습니다. 그런 다음 "static"이라는 새 CNAME을 추가하여 CloudFront를 가리 킵니다.
즉, HTML은 S3에서 직접 가져온 것으로 static.mydomain.com을 가리키는 모든 CSS / JS / IMG 참조가 있습니다.