Saya telah bereksperimen dengan waktu kedaluwarsa cache acak untuk menghindari situasi di mana permintaan individu memaksa beberapa hal untuk diperbarui sekaligus. Misalnya, halaman web mungkin menyertakan lima komponen berbeda. Jika masing-masing diatur ke waktu habis dalam 30 menit, pengguna akan memiliki waktu tunggu yang lama setiap 30 menit. Jadi sebagai gantinya, Anda mengatur semuanya untuk waktu acak antara 15 dan 45 menit untuk membuatnya paling mungkin hanya satu komponen akan memuat ulang untuk setiap memuat halaman yang diberikan.
Saya mencoba menemukan penelitian atau pedoman tentang topik ini, misalnya parameter varians optimal. Saya ingat pernah melihat satu artikel tentang bagaimana Google (?) Menggunakan teknik ini, tetapi tidak dapat menemukannya, dan sepertinya tidak banyak ditulis tentang topik tersebut.
sumber
Jawaban:
Beberapa dokumen:
sumber
Kembali untuk menjawab pertanyaan saya sendiri, masalah utama di sini adalah bagaimana menghindari semuanya selalu berakhir pada saat yang sama. Jika hal itu dibiarkan terjadi, sistem akan melambat dan menjadi macet saat mengisi ulang cache.
Sebagian besar waktu, ini sebenarnya bukan masalah dalam praktik. Seiring waktu, semua komponen cenderung melayang dalam hal waktu mereka kedaluwarsa. Jika ada beberapa komponen yang sedang dibangun kembali pada saat yang sama, itu adalah kode bau karena mereka mungkin harus di-cache bersama sebagai komponen tunggal (mis. Jika Anda memiliki header, body, dan footer unik halaman di-cache secara terpisah, mungkin Anda bisa cukup cache halaman itu sendiri).
Tentu ada saat-saat ketika banyak hal perlu di-cache pada satu waktu, misalnya setelah memulai suatu sistem, jika kita telah menghapus seluruh cache atau memutar kunci cache. Dalam hal ini, biasanya tidak terlalu buruk karena komponen cepat terisi, dan expiries kemudian akan terpisah.
Sejauh ini merupakan masalah, ada beberapa solusi:
sumber