Microsoft Cache di output ASP.NET fornisce funzionalità per memorizzare nella cache il contenuto renderizzato delle pagine ASP.NET o dei controlli utente per una durata specificata. Ciò consente all'applicazione ASP.NET di soddisfare tutte le richieste successive dalla cache invece di eseguire nuovamente il rendering e la riesecuzione di una pagina.
Tu aggiungi il <% @OutputCache %> direttiva nella pagina per utilizzare la cache di output ASP.NET.
1 2 |
<%@Page … %> <%@OutputCacheDuration="duration"VaryByParam="paramList"%> |
La memorizzazione nella cache di output di ASP.NET è una funzionalità molto utile, soprattutto per le situazioni in cui si accede a una pagina più frequentemente di quanto non cambi e la si serve dalla cache. Ciò migliora le prestazioni dell'applicazione evitando le riesecuzioni della pagina e anche riducendo i costosi viaggi del database, specialmente quando la pagina comporta molte operazioni pesanti sul database. Ciò migliora anche la scalabilità dell'applicazione perché il database diventa generalmente un collo di bottiglia della scalabilità quando sono presenti milioni di tali pagine e richieste che coinvolgono operazioni di database.
Problemi con la cache di output ASP.NET nell'ambiente Microsoft Azure
Quando si usa la cache di output in Microsoft Azure, l'output della pagina viene archiviato come InProc all'interno del ruolo Web di Microsoft Azure per impostazione predefinita. Il primo problema è che ti limita alla memoria disponibile sull'istanza del ruolo Web e ciò potrebbe creare un problema di memoria insufficiente quando si memorizza nella cache una grande quantità di dati di output della pagina. Un altro problema è che l'applicazione viene eseguita su più istanze del ruolo Web Microsoft Azure con bilanciamento del carico. La richiesta successiva potrebbe passare a un'altra istanza del ruolo Web, che crea anche una nuova copia dei dati della cache di output ASP.NET in questa istanza. Queste copie ridondanti degli output di pagina in ogni istanza di ruolo Web consumano molta memoria aggiuntiva.
Anche le istanze del ruolo Web di Microsoft Azure vengono riciclate abbastanza frequentemente per la manutenzione e l'applicazione di patch. Quando ciò si verifica, tutti gli output della pagina vengono persi e dovrai rieseguire tutte le pagine per ripopolare la cache di output della pagina, il che ha un impatto negativo sulle prestazioni dell'applicazione Azure.
Come risolvere i problemi di memorizzazione nella cache di output in Microsoft Azure?
Un modo per risolvere tutti questi problemi in Microsoft Azure consiste nell'usare una cache distribuita, che è fuori processo ed è un archivio comune per tutte le istanze del ruolo Web di Microsoft Azure. ASP.NET 4.0 ha introdotto un punto di estendibilità che consente agli sviluppatori di utilizzare qualsiasi cache distribuita di loro scelta come archivio cache di output ASP.NET.
La cache distribuita è condivisa da tutti i ruoli Web di Microsoft Azure per gli output delle pagine, quindi non vengono eseguite copie ridondanti all'interno delle singole istanze del ruolo Web. I ruoli Web di Microsoft Azure diventano puramente stateless, quindi i dati non vengono mai persi quando i ruoli Web vengono riciclati. È possibile memorizzare nella cache un'enorme quantità di dati nella cache distribuita unendo le risorse di memoria di tutti i server cache insieme. Inoltre, la cache distribuita riduce il carico sul database perché non è necessario eseguire separatamente le esecuzioni di pagine che coinvolgono le chiamate al database in ogni istanza del ruolo Web di Microsoft Azure.
NCache per Azure è un cache distribuita in memoria per .NET applicazioni distribuite nel cloud di Microsoft Azure. NCache per Azure ha implementato il provider della cache di output ASP.NET che è possibile utilizzare per archiviare l'output della pagina ASP.NET e risolvere tutti i problemi sopra menzionati. Inoltre, la distribuzione NCache come Servizio di memorizzazione nella cache di Azure fornisce affidabilità dei dati con la replica e migliora la scalabilità delle applicazioni.
Come si usa NCache per il provider di cache di output di Azure ASP.NET
Puoi usare NCache per Azure per la memorizzazione nella cache dell'output in ASP.NET come segue senza alcuna modifica del codice all'applicazione Microsoft Azure.
Passo 1: Aggiungi riferimento di NCache per l'assembly del provider Cache di output di Azure.
File: web.config
1 2 3 4 5 6 |
<compilation debug="true " targetframework="4.0"> <assemblies> <add assembly="Alachisoft.NCache.OutputCache,Version=x.x.x.x,Culture=neutral"> </add></assemblies> </compilation> |
Passo 2: Registrati NCache per Provider cache di output di Azure inconfigurazione> sezione e fornire le impostazioni della cache.
File: web.config
1 2 3 4 5 6 7 8 |
<caching> <outputcache defaultprovider="NOutputCacheProvider"> <providers> <add name="NOutputCacheProvider" type="NCOutputCache.NOutputCacheProvider" exceptionsenabled="true" enablelogs="false" cachename="mypartitionofReplicaCache"> </add></providers> </outputcache> </caching> |
Passo 3: Aggiungi la direttiva ASP.NET Output Cache nella pagina che desideri memorizzare nella cache.
1 |
<%@OutputCacheVaryByParam="ProductCategory"Duration="300"%> |
Documentazione: Utilizzo della cache di output ASP.NET con NCache
NCache per le funzionalità della cache di output di Azure ASP.NET
NCache per Azure offre un set completo di funzionalità per la memorizzazione nella cache e la gestione della memorizzazione nella cache di output di Microsoft Azure. Di seguito è riportato un elenco di loro:
- Specificare la durata per l'output della pagina: NCache per Azure consente di specificare una durata per la quale si desidera memorizzare nella cache l'output della pagina ASP.NET.
- Memorizza nella cache diverse versioni di una pagina: NCache per Azure consente di memorizzare nella cache versioni diverse della pagina a seconda delle varie direttive della cache di output di ASP.NET, ad esempio VaryByParam, VaryByCustom, VaryByControl. Un'altra versione dell'output della pagina viene archiviata nella cache distribuita se viene ricevuto un parametro diverso per una richiesta di pagina.
- Memorizza nella cache diverse porzioni di una pagina: Puoi anche specificare solo porzioni della pagina invece di memorizzare nella cache l'intera pagina. Questo è per le situazioni in cui si memorizza nella cache solo la parte statica della pagina e si lascia la parte dinamica che viene renderizzata in fase di esecuzione.
- Implementare hook personalizzati per la cache di output ASP.NET: NCache for Azure consente di implementare e registrare gli hook (interfaccia) personalizzati per l'output della pagina. Questo serve per allegare alcuni attributi estesi agli output della tua pagina come NCache per dipendenze del database di Azure, tag, gruppi e così via.
Conclusione
Come si è visto, la cache distribuita consente di memorizzare nella cache gli output della pagina ASP.NET, il che risolve i problemi dell'applicazione con più ruoli Web di Azure con carico bilanciato. NCache è un provider di cache di output di Azure ASP.NET che aiuta a migliorare la scalabilità e l'affidabilità delle prestazioni delle applicazioni ASP.NET.