Kadaluwarsa Cache Acak

13

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.

mahemoff
sumber
Bisakah Anda menulis ulang ini sebagai pertanyaan? Tidak jelas apa yang Anda harapkan dari sebuah jawaban.
Derek
Oke, sudah selesai.
mahemoff

Jawaban:

4

Beberapa dokumen:

haylem
sumber
3
Terima kasih atas tautan ini, tetapi tidak ada yang menyebutkan keacakan.
mahemoff
2
Saya tahu berapa umur pertanyaan ini, tetapi Matthew Neale dari EstarOnline Limited melakukan ini (PDF): estaronline.com/images/assetimages/…
Nick Bedford
@NickBedford Ini adalah jawaban yang saya cari. Komentar Anda harus menjadi jawaban yang diterima.
WhiteHotLoveTiger
0

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:

  • Cukup pilih durasi kedaluwarsa cache acak dalam rentang alih-alih durasi tetap, misalnya integer acak antara 15 dan 90 menit, bukan 60 menit.
  • Izinkan respons basi. Hanya karena item cache telah kedaluwarsa, tidak berarti Anda tidak dapat menggunakannya jika masih ada. Bergantung pada kebutuhan bisnis, mungkin dapat diterima untuk menggunakannya jika ada masalah kinerja yang mengambil versi aslinya setelah kedaluwarsa. Dalam HTTP, ini adalah tujuan "harus divalidasi ulang" (jika benar, itu berarti tidak menggunakan versi cache setelah kedaluwarsa).
mahemoff
sumber