Akses data dan lapisan persistensi / penyimpanan adalah tempat alami untuk melakukan caching. Mereka melakukan I / O, menjadikannya berguna, tempat yang mudah untuk memasukkan caching. Saya berani mengatakan bahwa hampir setiap DAL atau lapisan kegigihan akan, saat matang, diberi fungsi caching - jika tidak dirancang seperti itu sejak awal.
Masalahnya adalah niat . Lapisan DAL dan ketekunan berhubungan dengan konstruksi tingkat rendah - misalnya, catatan, tabel, baris, dan blok. Mereka tidak melihat "bisnis" atau objek lapisan aplikasi, atau memiliki banyak wawasan tentang bagaimana mereka digunakan di tingkat yang lebih tinggi. Ketika mereka melihat beberapa baris atau selusin blok sedang dibaca atau ditulis, tidak jelas bahwa mereka mewakili. "Akun Jones yang saat ini kami analisis" tidak terlihat jauh berbeda dari "beberapa data referensi tingkat perpajakan dasar yang dibutuhkan aplikasi sekali saja, dan yang tidak akan direferensikan lagi." Pada lapisan ini, data adalah data adalah data.
Caching pada DAL / risiko lapisan persistensi memiliki data referensi pajak "dingin" di sana, dengan sia-sia menempati cache 12,2MB dan memindahkan beberapa informasi akun yang, pada kenyataannya, akan digunakan secara intensif hanya dalam satu menit. Bahkan manajer cache terbaik berhadapan dengan sedikit pengetahuan tentang struktur dan koneksi data tingkat yang lebih tinggi, dan sedikit wawasan tentang operasi apa yang akan segera hadir, sehingga mereka kembali ke algoritma dugaan waktu .
Sebaliknya, cache lapisan aplikasi atau bisnis hampir tidak begitu rapi. Ini memerlukan memasukkan operasi manajemen cache atau petunjuk di tengah logika bisnis lainnya, yang membuat kode bisnis lebih kompleks. Tetapi tradeoffnya adalah: Memiliki lebih banyak pengetahuan tentang bagaimana data tingkat makro terstruktur dan operasi apa yang muncul, ia memiliki peluang yang jauh lebih baik untuk memperkirakan efisiensi caching yang optimal ("clairvoyant" atau "Bélády Min").
Apakah memasukkan tanggung jawab manajemen cache ke dalam kode bisnis / aplikasi masuk akal adalah panggilan penilaian, dan akan bervariasi berdasarkan aplikasi. Dalam banyak kasus, walaupun diketahui bahwa lapisan DAL / kegigihan tidak akan benar-benar "benar," untungnya adalah mereka dapat melakukan pekerjaan yang cukup baik, bahwa mereka melakukannya dengan cara "bersih" secara arsitektur dan jauh lebih intensif untuk diuji. , dan penangkapan tingkat rendah menghindari peningkatan kompleksitas kode bisnis / aplikasi.
Kompleksitas yang lebih rendah mendorong kebenaran dan keandalan yang lebih tinggi, dan waktu ke pasar yang lebih cepat. Itu sering dianggap sebagai tradeoff yang hebat - caching yang kurang sempurna, tetapi kualitas yang lebih baik, kode bisnis yang lebih tepat waktu.