Procedure consigliate per la memorizzazione nella cache in ASP.Net

La memorizzazione nella cache è una strategia di gestione dello stato spesso adottata in ASP.Net per migliorare le prestazioni dell'applicazione riducendo al minimo il consumo di risorse nel sistema. Se usato correttamente, può migliorare notevolmente le prestazioni della tua applicazione archiviando la pagina wWb nella sua interezza o in parte, o persino memorizzare i dati dell'applicazione attraverso le richieste HTTP. La memorizzazione nella cache consente di eseguire il rendering della pagina Web più rapidamente e un uso appropriato della memorizzazione nella cache riduce al minimo o riduce le visite al database o il consumo di risorse del server.

La memorizzazione nella cache in ASP.Net è dei tre tipi seguenti:

  1. cache di output della pagina
  2. memorizzazione nella cache dei frammenti di pagina
  3. memorizzazione nella cache dei dati

Memorizzazione nella cache dell'output della pagina

Questa è una forma di memorizzazione nella cache in ASP.Net che archivia una copia della pagina Web nella cache di memoria in modo che le richieste successive per la stessa pagina Web possano essere recuperate direttamente dalla cache: l'output memorizzato nella cache viene inviato all'applicazione. Ciò migliora notevolmente le prestazioni dell'applicazione. Il frammento di codice seguente mostra come implementare la memorizzazione nella cache dell'output della pagina.

L'opzione VaryByParam ti aiuta a specificare le variabili nella richiesta HTTP che richiederebbero una nuova voce di cache. Altre opzioni possibili includono: VaryByHeader e VaryByCustom. È inoltre possibile specificare Posizione e Durata nella direttiva OutputCache: è possibile utilizzarli per specificare la posizione della cache e anche la durata per la quale la pagina Web deve essere memorizzata nella cache rispettivamente.

Memorizzazione nella cache dei frammenti di pagina

La memorizzazione nella cache dei frammenti di pagina è una strategia di memorizzazione nella cache in cui la pagina Web viene memorizzata parzialmente nella cache: vengono memorizzati nella cache solo i frammenti della pagina Web, non l'intera pagina Web. È possibile utilizzare la stessa sintassi della memorizzazione nella cache dell'output della pagina. Tuttavia, è necessario applicare l'attributo OutputCache a un controllo utente anziché alla pagina Web. La memorizzazione nella cache dei frammenti è utile quando è necessario memorizzare nella cache solo parti della pagina Web, in genere nelle situazioni in cui la pagina Web contiene una combinazione di sezioni comuni e dinamiche. Ad esempio, è possibile avere una pagina Web che contiene una combinazione di voci di menu e anche alcune sezioni dinamiche che devono essere popolate e aggiornate spesso dal database.

Memorizzazione nella cache dei dati

ASP.Net espone l'API della cache per archiviare i dati nella cache per il successivo recupero. La sintassi per la memorizzazione dei dati nella cache utilizzando l'API della cache è fornita di seguito.

Cache["key"] = "value";

È inoltre possibile utilizzare i metodi Aggiungi o Inserisci. Per remotare una voce dalla cache, è possibile utilizzare il metodo Remove () della classe Cache. Il metodo Insert () della classe Cache consente di specificare la dipendenza dalla cache. La dipendenza dalla cache è una strategia che garantisce che quando i dati nell'archivio dati (da cui è stata popolata la cache) cambiano, la cache verrà quindi ripopolata immediatamente. Quando i dati nell'archivio dati cambiano, la cache scade, determinando un ripopolamento della cache con i dati più recenti. Puoi leggere di più su questo da questo articolo di MSDN.

Migliori pratiche

È necessario memorizzare nella cache il più spesso possibile e memorizzare nella cache i dati correttamente in ogni livello dell'applicazione. Quando si utilizza la memorizzazione nella cache dei dati, è necessario implementare una strategia adeguata per garantire che i dati nella cache siano sincronizzati con quelli nell'archivio dati. Puoi sfruttare i gestori di cache distribuiti come Memcached in modo che anche la tua strategia di memorizzazione nella cache possa scalare bene e fornire notevoli guadagni in termini di prestazioni: puoi utilizzare Memcached per archiviare dati di grandi dimensioni. È necessario assicurarsi di memorizzare nella cache solo i dati relativamente obsoleti: non ha senso memorizzare nella cache i dati che cambierebbero spesso nel tempo. Inoltre, i dati che è improbabile essere riutilizzati non devono essere archiviati nella cache. Non dovresti usare eccessivamente SqlDependency o SqlCacheDependency.

E ora, conosciamo anche gli aspetti negativi del caching. L'oggetto cache è disponibile solo per il dominio dell'applicazione corrente. Quindi, se desideri archiviare i dati nella cache e renderli accessibili in una web farm, non è possibile. Dovresti sfruttare la cache distribuita come Windows Server AppFabric Caching o altri framework di caching distribuiti per avere i dati nella cache accessibili a livello globale in una Web farm.

La memorizzazione nella cache è un potente meccanismo per aumentare le prestazioni dell'applicazione archiviando dati relativamente obsoleti nella memoria in modo che gli stessi possano essere recuperati dalla memoria cache in un secondo momento. Discuterò di più su questo argomento con esempi di codice di vita reale nei miei post futuri qui.