cli를 통해 react 앱을 바로 s3에 푸쉬하게 사용하고 있고 이를 cloudfront를 통해 https를 달았는데, 업데이트를 해도 캐싱된 자원만 응답으로 보내는 경우
- 객체 Invalidation, 객체 versioning
- 정적 파일에 캐싱 무시 메타 데이터 추가
S3 객체를 무효화하여 CloudFront 배포의 캐시에서 해당 객체를 제거한다. 캐시에서 객체를 제거한 후 다음 요청에서는 Amazon S3에서 직접 객체를 검색한다.
cloudfront의 호스팅되어 있는 목록을 선택하고 Invalidation 항목으로 이동하여 create Invalidation을 클릭하고 /*을 선택한다. 이 과정을 통해 현재 캐싱되어 있는 전체 파일을 무효화하고 요청이 있을 때 다시 s3에 업데이트된 객체를 응답으로 보내주도록 설정할 수 있다.
캐싱 시간의 설정이 가능하지만 업데이트마다 무효화를 하는게 가장 빠르다.
참조:
https://docs.aws.amazon.com/ko_kr/AmazonCloudFront/latest/DeveloperGuide/Invalidation.html
http://faq.hostway.co.kr/AWS_FAQ/7582
https://walkinpcm.blogspot.com/2017/06/aws-aws-s3-origin-cloudfront.html
정적 파일에 캐싱 무시 메타 데이터 추가
If you never want index.html to be cached, set the Cache-Control: max-age=0 header on that file only. CloudFront will make a request back to your origin S3 bucket on every request, but it sounds like this is desired behavior.
참조:
https://stackoverflow.com/questions/45727454/how-to-make-cloudfront-never-cache-index-html-on-s3-bucket