Configurare IDistributedCache per la memorizzazione nella cache delle risposte
ASP.NET Core fornisce IDistributedCache per Memorizzazione nella cache delle risposte che consente di memorizzare nella cache la risposta del server di una richiesta client per richieste future. La memorizzazione nella cache delle risposte aumenta le prestazioni dell'applicazione poiché la risposta viene servita dalla cache. Inoltre, alleggerisce il carico di elaborazione dai server poiché non devono elaborare e generare nuovamente una risposta per la stessa richiesta.
NCache IDistributedCache per la memorizzazione nella cache delle risposte è un meccanismo distribuito in ASP.NET Core che consente alle applicazioni di memorizzare le risposte del server per le richieste future. Servendo i dati direttamente da NCache, le applicazioni riducono al minimo il carico di elaborazione e aumentano significativamente i tempi di risposta.
Note:
Per opzioni avanzate relative alla memorizzazione nella cache delle risposte tramite dipendenza, vai a Memorizzazione nella cache delle risposte di ASP.NET Core.
Quando utilizzare la memorizzazione nella cache delle risposte con IDistributedCache?
L'interfaccia IDistributedCache per la memorizzazione nella cache delle risposte può essere utilizzata per memorizzare nella cache elementi statici dell'applicazione che vengono modificati raramente. Ciò include file CSS/JavaScript, file multimediali o metadati di una pagina web. Pertanto, anziché richiedere nuovamente il contenuto al server, questi dati possono essere recuperati dalla cache.
Opzioni di memorizzazione nella cache delle risposte
Caching basato su HTTPS Memorizza nella cache i dati all'estremità del browser Web sul client. Ciò riduce il numero di richieste che un client effettua al server web, poiché qualsiasi richiesta successiva verrà gestita dalla cache anziché dal server web. Tuttavia, una volta memorizzata nella cache del browser, la risposta scadrà solo allo scadere del tempo di memorizzazione nella cache assegnato e non potrà essere cancellata quando necessario.
Cache in memoria Memorizza i dati nella memoria del server, utilizzando il provider di caching interno di ASP.NET Core. Questa opzione è più flessibile per la memorizzazione nella cache delle risposte poiché ASP.NET Core fornisce Aiuto tag cache che consente di aggiungere tag per specificare quale vista dell'applicazione MVC deve essere memorizzata nella cache. Poiché si tratta di InProc, è possibile riavviare il motore ASP.NET per svuotare la cache quando necessario.
Caching distribuito Memorizza nella cache i dati in memoria, se l'applicazione è ospitata in una web farm. La cache è distribuita su tutti i server della web farm e qualsiasi server può rispondere al client se i dati richiesti sono disponibili nella cache. Simile alla memorizzazione nella cache in memoria, Helper tag cache distribuito consente di specificare le viste esatte che devono essere memorizzate nella cache. Qui è dove NCache entra in gioco, poiché può essere utilizzato come cache distribuita per la memorizzazione nella cache delle risposte tramite la sua interfaccia IDistributedCache. Inoltre, questo estende un maggiore controllo alla tua applicazione poiché la cache è scalabile e gli elementi possono essere rimossi dalla cache quando necessario.
Per utilizzare NCache come IDistributedCache per la memorizzazione nella cache delle risposte, NCache fornisce i propri metodi di estensione per configurare servizi e middleware.
Prerequisiti
Prima di utilizzare la memorizzazione nella cache delle risposte di ASP.NET Core con NCache, assicurarsi che siano soddisfatti i seguenti prerequisiti:
- Installa i pacchetti NuGet seguenti nell'applicazione in base al tuo NCache edizione:
- Enterprise: NCache.Microsoft.Estensioni.Memorizzazione nella cache
- Fonte aperta: NCache.Microsoft.Extensions.Caching.OpenSource
- Utilizzare NCachePer i metodi di caching delle risposte, includere il seguente namespace nell'applicazione:
- La cache deve essere in esecuzione.
- Per i dettagli dell'API, fare riferimento a: AggiungiResponseCaching.
- Assicurati che i dati aggiunti lo siano serializzabile.
Configura il servizio di memorizzazione nella cache delle risposte
ASP.NET Core fornisce il proprio middleware per IDistributedCache per la memorizzazione nella cache delle risposte. Questo deve essere aggiunto alla raccolta di servizi utilizzando AggiungiResponseCaching metodo.
Apri Avvio.cs del tuo progetto.
Nel
ConfigureServicesmetodo, aggiungi il seguente servizio:
public void ConfigureServices(IServiceCollection services)
{
services.AddResponseCaching();
// Remaining services here
}
Note:
Per garantire che l'operazione sia a prova di errore, si consiglia di gestire eventuali potenziali eccezioni all'interno dell'applicazione, come spiegato in Gestione dei guasti.
Configurazione NCache come cache distribuita
NCache fornisce metodi personalizzati tramite IDistributedCache per configurarsi come cache distribuita per le applicazioni ASP.NET. Ciò richiede solo un nome cache NCache e qualsiasi configurazione opzionale per archiviare il contenuto MVC.
Metodo 1: Specificare la configurazione della cache in appsettings.json
Le configurazioni della cache possono essere aggiunte come una sezione separata in appsettings.json della tua domanda. L'esempio seguente aggiunge una sezione NCacheSettings che configura il nome della cache. Puoi cambiare il nome in base alla tua cache registrata.
Consigli
Assicurati che la cache specificata sia in esecuzione.
. . .
"NCacheSettings": {
"CacheName": "demoCache",
"EnableLogs": "True",
"ExceptionsEnabled": "True"
}
. . .
Una volta specificata la configurazione della cache, NCache i servizi devono essere aggiunti per configurare NCache come cache distribuita nell'applicazione.
Apri Avvio.cs del tuo progetto.
Nel
ConfigureServicesmetodo aggiungi il seguente servizio. AggiungiNCacheIl metodo di estensione DistributedCache si inizializza,AddNCacheDistributedCacheil metodo di estensione inizializza le configurazioni da appsettings.json prima di aggiungere i servizi al contenitore e aggiunge NCache come cache distribuita predefinita come implementazione diIDistributedCache.
public void ConfigureServices(IServiceCollection services)
{
// Add NCache services to the container
services.AddNCacheDistributedCache(Configuration.GetSection("NCacheSettings"));
}
Metodo 2: specificare la configurazione in IOptions
Un altro metodo per specificare le configurazioni consiste nel fornire le impostazioni di configurazione come IOptions.
public void ConfigureServices(IServiceCollection services)
{
// Add framework services
services.AddMvc();
services.AddNCacheDistributedCache(configuration =>
{
configuration.CacheName = "demoCache";
configuration.EnableLogs = true;
configuration.ExceptionsEnabled = true;
});
}
Aggiungi l'helper tag cache distribuita per visualizzare la classe
Quando NCache I servizi sono stati configurati per la memorizzazione nella cache delle risposte, ora è possibile specificare il contenuto specifico delle viste del controller che si desidera memorizzare nella cache. ASP.NET Core fornisce Helper tag cache distribuito per aggiungere tag con parametri al file Visualizzazioni che memorizzerà nella cache il contenuto contrassegnato nella cache configurata.
L'esempio seguente aggiunge il <distributed-cache> taggare il contenuto in Visualizzazioni -> Informazioni su.cshtml con parametri variabili. Dopo aver aggiornato l'applicazione, il contenuto dell'elemento normale cambierà in base DateTime.Now, mentre il contenuto taggato rimarrà statico poiché viene memorizzato nella cache.
Migliori
expires-afterL'attributo specifica la scadenza assoluta per il contenuto. Questo elemento verrà rimosso dalla cache una volta trascorsi 10 secondi. Tuttavia, se l'applicazione viene aggiornata, gli elementi vengono ricaricati nella cache.Migliori
nameattributo è l'identificatore univoco per la cache per ogni istanza dell'helper tag.Migliori
vary-byL'attributo mantiene l'elemento nella cache finché la stringa di query nell'URL non è la stessa per il valore specificato in questo tag.
Per maggiori dettagli sui parametri, fare riferimento a Documentazione Microsoft per Tag Helpers prima di procedere.
Una volta eseguita l'applicazione, è possibile monitorare le statistiche della cache tramite il file NCache Centro Direzionale/NCache Monitor per le aziende.
@{
ViewData["Title"] = "About";
}
<h2>@ViewData["Title"]</h2>
<h3>@ViewData["Message"]</h3>
<p> The value for this item will change every time the application is refreshed.</p>
<div>@DateTime.Now.ToString()</div><br />
<p>The value for this item will be static and remain in the cache, unless the cache is cleared.</p>
<distributed-cache name="Key:1" >
<div>@DateTime.Now.ToString()</div><br />
</distributed-cache>
<p>The value for this item will be static upon refreshing the application, but it will expire after 10 seconds.</p>
<distributed-cache name="Key:2" expires-after ="TimeSpan.FromSeconds(10)">
<div>@DateTime.Now.ToString()</div><br />
</distributed-cache>
<p>The value for this item will be static and will only be removed from cache if the "vary-by" value is changed.</p>
<distributed-cache name="Key:3" vary-by ="test">
<div>@DateTime.Now.ToString()</div><br />
</distributed-cache>
Risorse addizionali
NCache fornisce un'applicazione di esempio per IDistributedCache per la memorizzazione nella cache delle risposte su GitHub.
Vedere anche
.NETTO: Alachisoft.NCache.Risposta nella cache spazio dei nomi.