Cara mengatur caching Amazon CloudFront dengan benar

Saya menggunakan S3 untuk menyimpan banyak gambar dan CloudFront untuk menyimpannya dalam cache. Masalah yang saya dapatkan adalah gambar saya tidak di-cache dengan benar.

Jika saya memeriksa header gambar melalui tautan CloudFront, itu akan menampilkan MISS pada percobaan pertama dan HIT untuk semua percobaan berikutnya. Ini normal, tetapi jika saya menutup browser saya, diamkan beberapa jam dan coba lagi, akan muncul MISS. Oleh karena itu menunjukkan bahwa itu hanya di-cache untuk waktu yang singkat.

Berikut contoh gambar di cdn: http://d711ds9nsj32q.cloudfront.net/static/8e1f8567e229e24e0782ed_1e994b9dc56ba092ecd2_5.jpg

Perilaku yang aneh adalah jika Anda mencoba mengendus header dengan web-sniffer.net Anda akan melihat MISS setiap saat. Meskipun kontrol cache adalah public, max-age=315360000 dan akan kedaluwarsa setelah 10 tahun.

Apa cara yang tepat untuk menyimpan sesuatu selama 10 tahun di cloudfront? Apakah ada header tambahan yang saya lewatkan?

Edit: Sebagai perbandingan, inilah gambar yang sama di imgur. Mereka menggunakan cloudflare tetapi perilaku yang saya lihat di sana benar. Setelah di-cache, saya tidak pernah melihat ada yang terlewat lagi dari komputer saya atau lokasi terdekat. Baik header saya maupun header mereka serupa kecuali untuk beberapa perbedaan (tidak penting). Bantuan apa pun dihargai.


person steve    schedule 29.01.2014    source sumber


Jawaban (1)


Bisa jadi Anda menyetel TTL minimum ke sesuatu yang non-default dan menyimpannya dalam cache untuk jangka waktu tersebut, bukan apa pun yang ada di header Kontrol Cache Anda. Saya pikir itu tidak mungkin karena Anda mungkin sudah memikirkannya dan karena tampaknya distribusinya menghormati Kontrol-Cache: tanpa-cache (dan tidak akan terjadi jika TTL minimum non-default).

Kemungkinan besar, cloudfront hanya mengeluarkan item Anda setelah beberapa saat:

Jika objek di lokasi edge tidak sering diminta, CloudFront mungkin akan mengeluarkan objek tersebut—menghapus objek sebelum tanggal kedaluwarsanya—untuk memberikan ruang bagi objek yang lebih populer.

- dari artikel ini

Sedangkan untuk web-sniffer.net, Anda akan melihat bahwa ia mengirimkan header Cache-Control: no-cache, yang akan membuat cloudfront mengambil dari asal.

person Alex Guerra    schedule 30.01.2014
comment
Terima kasih untuk bantuannya. Saya rasa penggusuran tidak terjadi karena saya menguji dengan file yang relatif baru. Tampaknya CF harus menunggu setidaknya beberapa waktu (berbulan-bulan?) sebelum melakukan hal seperti itu. Juga: Jika Anda mencoba gambar ini dari Squre di web-sniffer Anda akan melihat bahwa itu adalah HIT setiap saat. Tampaknya header saya dan header mereka serupa, dan keduanya di CloudFront. - person steve; 30.01.2014
comment
Anda benar, saya mencobanya pada file saya sendiri yang disajikan melalui cf dan berhasil. Bisakah Anda memposting URL objek sumber? - person Alex Guerra; 30.01.2014
comment
Alex, ini url sumber. Saya dapat memberi Anda info lebih lanjut jika Anda membutuhkannya. Saat saya mengunggah file, saya menyetel 'Kontrol Cache' dan 'Kedaluwarsa' menjadi 10 tahun. Terima kasih. - person steve; 30.01.2014
comment
Saya menyiapkan distribusi default lain di depan Anda dan berhasil membuat web-sniffer.net menampilkan cache hits setiap saat (setelah beberapa kesalahan). Hal ini membuat saya curiga bahwa apa pun yang terjadi terjadi karena pengaturan distribusi Anda. Apakah Anda memiliki sesuatu yang non-default dalam konfigurasi Anda? - person Alex Guerra; 31.01.2014
comment
Sangat menarik. Saya tidak melakukan apa pun di luar standar. Saya dapat melanjutkan dan menyiapkan yang lain. Saya akan membiarkan semuanya sebagai default dan mempostingnya di sini. - person steve; 31.01.2014
comment
Jadi, saya membuat distribusi dan masih ketinggalan di web-sniffer.net . Saya ingin tahu apa masalahnya? - person steve; 31.01.2014
comment
Ugh, saya mengaktifkan kembali distribusi itu dan sekarang saya juga tidak bisa membuat web-sniffer menampilkan cache hits lagi! Maaf saya tidak bisa membantu lebih lanjut, ini membuat saya bingung. - person Alex Guerra; 31.01.2014
comment
Tidak masalah, saya sudah membeli paket dukungan jadi saya akan mencoba menyelesaikannya dengan mereka sekarang. Terima kasih banyak. Saya akan menerima jawaban Anda. - person steve; 31.01.2014