พื้นหลัง
ฉันโฮสต์เว็บไซต์คงที่ใน S3 กับ CloudFront ด้านบน ปัญหาที่ฉันมีอยู่กับไฟล์ HTML ของฉัน
ตามคำถามที่พบบ่อยของ CloudFront :
Amazon CloudFront ใช้ส่วนหัวควบคุมแคชเหล่านี้เพื่อกำหนดความถี่ในการตรวจสอบจุดเริ่มต้นของไฟล์นั้น ๆ
สิ่งที่ฉันทำไปแล้ว
ด้วยสิ่งนี้ในใจฉันได้ตั้งค่าไฟล์ HTML ใน S3 Bucket ของฉันเพื่อเพิ่มในส่วนหัวต่อไปนี้:
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
ข้อมูลอย่างย่อ / คำถาม
จากที่กล่าวมาข้างต้นฉันจะได้รับ HTML ล่าสุดโดยอัตโนมัติเมื่อใช้ CloudFront ได้อย่างไร
ตามคำถามที่พบบ่อยฉันควรจะทำเช่นนี้กับส่วนหัวของ Cache-Control แต่ฉันไม่สามารถทำงานนี้ได้
ทำตามคำตอบด้านล่าง
ในที่สุดฉันก็ตัดสินใจเปลี่ยน www CNAME ของฉันให้ชี้ไปที่ถัง S3 ของฉันโดยตรง จากนั้นเพิ่ม CNAME ใหม่ชื่อ "คงที่" ซึ่งชี้ไปที่ CloudFront
ซึ่งหมายความว่า HTML นั้นโดยตรงจาก S3 ซึ่งมีการอ้างอิง CSS / JS / IMG ทั้งหมดที่ชี้ไปที่ static.mydomain.com