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?

È stato utile?

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).

http://msdn.microsoft.com/en-us/library/ms178604.aspx

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top