Baru-baru ini saya telah menyelidiki kemungkinan caching di ASP.NET.
Aku berguling saya sendiri "Cache", karena saya didn't tahu apa-apa, itu tampak lebih seperti ini:
public class DataManager
{
private static DataManager s_instance;
public static DataManager GetInstance()
{
}
private Data[] m_myData;
private DataTime m_cacheTime;
public Data[] GetData()
{
TimeSpan span = DateTime.Now.Substract(m_cacheTime);
if(span.TotalSeconds > 10)
{
// Do SQL to get data
m_myData = data;
m_cacheTime = DateTime.Now;
return m_myData;
}
else
{
return m_myData;
}
}
}
Sehingga nilai-nilai yang disimpan untuk sementara di singleton, dan ketika waktu berakhir, nilai-nilai yang baru. Jika waktu belum berakhir, dan permintaan untuk data ini dilakukan, nilai-nilai yang tersimpan dalam bidang dikembalikan.
Apa manfaat dari menggunakan metode nyata (http://msdn.microsoft.com/en-us/library/aa478965.aspx) bukannya ini?
Saya pikir maxim "biarkan komputer melakukan hal itu; itu's lebih pintar dari anda" berlaku di sini. Hanya seperti manajemen memori dan lain-lain hal-hal yang rumit, komputer lebih banyak informasi tentang apa itu's melakukan dari anda; akibatnya, bisa mendapatkan kinerja yang lebih dari anda.
Microsoft telah memiliki tim insinyur yang bekerja di atasnya dan mereka've mungkin berhasil memeras lebih banyak kinerja dari sistem anda, anda tidak akan mungkin bagi anda untuk. It's juga kemungkinan bahwa ASP.NET's built-in caching beroperasi pada tingkat yang berbeda (yang tidak dapat diakses untuk aplikasi anda), sehingga jauh lebih cepat.
Yang ASP.NET mekanisme caching telah sekitar untuk sementara waktu, jadi itu's stabil dan dipahami dengan baik. Ada banyak sumber daya di luar sana untuk membantu anda membuat sebagian besar dari itu.
Bergulir anda sendiri mungkin menjadi solusi yang tepat, tergantung pada kebutuhan anda.
Bagian yang sulit tentang caching adalah memilih apa yang aman untuk cache, dan ketika. Untuk aplikasi di mana data yang sering berubah, anda dapat memperkenalkan beberapa sulit untuk memecahkan bug dengan caching, jadi hati-hati.
Caching di ASP.NET kaya fitur dan anda dapat mengkonfigurasi caching dalam waktu yang cukup granular cara.
Dalam kasus anda (data caching) salah satu fitur yang anda're kehilangan adalah kemampuan untuk membatalkan dan me-refresh cache jika data pada SQL server diperbarui dalam beberapa cara (SQL Cache Ketergantungan).