Lý lịch
Tôi đang lưu trữ một trang web tĩnh trên S3, với CloudFront trên đầu trang. Vấn đề tôi gặp phải là với các tệp HTML của mình.
Theo Câu hỏi thường gặp của CloudFront :
Amazon CloudFront sử dụng các tiêu đề kiểm soát bộ đệm này để xác định tần suất cần kiểm tra nguồn gốc của phiên bản cập nhật của tệp đó
Những gì tôi đã làm cho đến nay
Với suy nghĩ này, tôi đã đặt các tệp HTML trong Nhóm S3 của mình để thêm vào các tiêu đề sau:
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Trong cuộc gọi đầu tiên của tôi samplefile.htm
, tôi thấy các tiêu đề phản hồi sau (Tôi đã loại trừ các tiêu đề rõ ràng (ví dụ Content-Type
) để giữ nguyên điểm:
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
Như bạn có thể thấy, Cache-Control
tiêu đề của tôi là ở đó. Vấn đề là, nếu tôi cập nhật tệp này và làm mới tôi sẽ nhận được nội dung được lưu trong bộ nhớ cache (chứ không phải tệp mới nhất) và tôi có thể thấy CloudFront đang phục vụ phiên bản được lưu trong bộ nhớ cache của mình bằng cách xem các tiêu đề phản hồi:
X-Cache:Hit from cloudfront
Tóm tắt / câu hỏi
Với suy nghĩ trên, làm cách nào tôi có thể tự động truy xuất HTML mới nhất khi sử dụng CloudFront?
Theo Câu hỏi thường gặp của tôi, tôi sẽ có thể làm điều này với các tiêu đề Kiểm soát bộ đệm, nhưng dường như tôi không thể làm việc này.
Thực hiện theo các câu trả lời dưới đây
Cuối cùng, tôi quyết định thay đổi www CNAME của mình để trỏ trực tiếp vào nhóm S3 của mình. Sau đó, thêm một CNAME mới gọi là "tĩnh", trỏ đến CloudFront.
Điều này có nghĩa là HTML trực tiếp từ S3, sau đó có tất cả các tham chiếu CSS / JS / IMG của nó trỏ đến static.mydomain.com