Latar Belakang
Saya hosting situs statis di S3, dengan CloudFront di atasnya. Masalah yang saya miliki adalah dengan file HTML saya.
Menurut FAQ CloudFront :
Amazon CloudFront menggunakan tajuk kontrol cache ini untuk menentukan seberapa sering perlu memeriksa asal untuk versi yang diperbarui dari file itu
Apa yang telah saya lakukan sejauh ini
Dengan mengingat hal ini, saya telah mengatur file HTML di S3 Bucket saya untuk menambahkan header berikut:
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Pada panggilan pertama saya ke saya samplefile.htm
, saya melihat tajuk respons berikut (saya sudah mengecualikan tajuk yang jelas (misalnya Content-Type
) untuk tetap pada intinya:
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
Seperti yang Anda lihat, Cache-Control
tajuk saya ada di sana. Masalahnya adalah, jika saya memperbarui file ini dan menyegarkan saya mendapatkan konten yang di-cache (daripada file terbaru), dan saya bisa melihat bahwa CloudFront melayani versi yang di-cache dengan melihat header respons:
X-Cache:Hit from cloudfront
Ringkasan / pertanyaan
Dengan pemikiran di atas, bagaimana saya dapat mencapai pengambilan otomatis HTML terbaru saat menggunakan CloudFront?
Sesuai dengan FAQ-nya, saya seharusnya bisa melakukan ini dengan header Cache-Control, tapi sepertinya saya tidak bisa membuatnya berfungsi.
Ikuti jawaban di bawah ini
Pada akhirnya saya memutuskan untuk mengubah www CNAME saya untuk menunjuk ke ember S3 saya secara langsung. Kemudian menambahkan CNAME baru yang disebut "statis", yang menunjuk ke CloudFront.
Ini berarti bahwa HTML adalah langsung dari S3, yang kemudian memiliki semua referensi CSS / JS / IMG yang menunjuk ke static.mydomain.com