Memorizzazione nella cache ASP.NET
Domanda
Recentemente ho studiato le possibilità di memorizzazione nella cache in ASP.NET.
Ho lanciato la mia "Cache", perché non sapevo di meglio, assomigliava un po' a questa:
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;
}
}
}
Pertanto i valori vengono archiviati per un po' in un singleton e, allo scadere del tempo, i valori vengono rinnovati.Se il tempo non è scaduto e viene eseguita una richiesta per i dati, vengono restituiti i valori memorizzati nel campo.
Quali sono i vantaggi rispetto all'utilizzo del metodo reale (http://msdn.microsoft.com/en-us/library/aa478965.aspx) Invece di questo?
Soluzione
Penso che la massima "lascia che lo faccia il computer;è più intelligente di te" si applica qui.Proprio come la gestione della memoria e altre cose complicate, il computer è molto più informato di quello che sta facendo rispetto a te;di conseguenza, in grado di ottenere più prestazioni di quelle che sei.
Microsoft ha avuto un team di ingegneri che ci ha lavorato e probabilmente sono riusciti a ottenere dal sistema molte più prestazioni di quanto sarebbe possibile per te.È anche probabile che la memorizzazione nella cache incorporata di ASP.NET operi a un livello diverso (che è inaccessibile all'applicazione), rendendolo molto più veloce.
Altri suggerimenti
Il meccanismo di memorizzazione nella cache ASP.NET è in circolazione da un po', quindi è stabile e ben compreso.Ci sono molte risorse là fuori per aiutarti a sfruttarlo al meglio.
Rollare il tuo potrebbe essere la soluzione giusta, a seconda delle tue esigenze.
La parte difficile della memorizzazione nella cache è scegliere cosa è sicuro memorizzare nella cache e quando.Per le applicazioni in cui i dati cambiano frequentemente, puoi introdurre alcuni bug difficili da risolvere con la memorizzazione nella cache, quindi fai attenzione.
La memorizzazione nella cache in ASP.NET è ricca di funzionalità ed è possibile configurarla in modo abbastanza granulare.
Nel tuo caso (caching dei dati) una delle funzionalità che ti stai perdendo è la possibilità di invalidare e aggiornare la cache se i dati sul server SQL vengono aggiornati in qualche modo (dipendenza della cache SQL).