Una funzionalità molto interessante di ASP.NET Core 7 è la nuova Output Cache, una versione più sofisticata della già esistente Response Cache. In questo e nei prossimi script ne introdurremo i concetti principali e cercheremo di capire anche come gestirne le peculiarità più avanzate.
Come possiamo intuire, lo scopo di Output Cache è fondamentalmente quello di mantenere una copia in cache dell'output generato dal server, così che una successiva richiesta possa essere evasa immediatamente, senza richiedere alcun processing. Questo ovviamente garantisce un'enorme scalabilità alla nostra applicazione, perché fa in modo che il server possa processare più richieste impiegando minori risorse - tutte le funzionalità di cache dovrebbero essere introdotte in primis con l'obiettivo di migliorare la scalabilità, più che la latenza di una richiesta.
Per attivare questa funzione in ASP.NET Core 7, come al solito, dobbiamo configurarla all'interno della classe Program:
public class Program { public static void Main(string[] args) { var builder = WebApplication.CreateBuilder(args); // Add services to the container. builder.Services.AddAuthorization(); // aggiungiamo il servizio di OutputCache builder.Services.AddOutputCache(); var app = builder.Build(); // Configure the HTTP request pipeline. app.UseHttpsRedirection(); // configuriamo il middleware di OutputCache nella pipeline app.UseOutputCache(); app.UseAuthorization(); // un endpoint di esempio app.MapGet("/cachedemo", () => DateTime.Now.ToLongTimeString()).CacheOutput(); app.Run(); } }
Nel codice in alto, abbiamo prima invocato il metodo AddOutputCache per aggiungere i servizi all'IoC container di ASP.NET Core e, poco più in basso, abbiamo usato UseOutputCache per registrare il corrispondente middleware.
Un aspetto importante da sottolineare è che, come al solito, l'ordine dei middleware è estremamente importante: nello specifico, UseOutputCache va invocato dopo UseCors o UseRouting, se presenti, altrimenti la cache non funzionerà correttamente.
Come ultimo step abbiamo registrato un endpoint di Minimal API, specificando che vogliamo memorizzare in cache il risultato tramite il metodo CacheOutput.
Se proviamo ora a eseguire l'applicazione, noteremo come il risultato resterà in cache per un minuto, che è la policy di default utilizzata da ASP.NET Core.
Output Cache non riguarda solo minimal API, può essere infatti utilizzata anche da Controller e Razor Page, oltre che essere configurata molto più in dettaglio, definendo policy, tag e regole di eviction.
Nei prossimi script entreremo più nei dettagli di questi concetti.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Ottenere il contenuto di una cartella FTP con la libreria FluentFTP
Sfruttare al massimo i topic space di Event Grid MQTT
Short-circuiting della Pipeline in ASP.NET Core
Cambiare la chiave di partizionamento di Azure Cosmos DB
Creazione di componenti personalizzati in React.js con Tailwind CSS
Utilizzare database e servizi con gli add-on di Container App
Eseguire operazioni con timeout in React
Load test di ASP.NET Core con k6
Eseguire un metodo asincrono dopo il set di una proprietà in Blazor 8
Elencare le container images installate in un cluster di Kubernetes
Effettuare chiamate con versioning da Blazor ad ASP.NET Core
Eseguire query manipolando liste di tipi semplici con Entity Framework Core
I più letti di oggi
- Cambiare la chiave di partizionamento di Azure Cosmos DB
- ASP.NET 2.0 per tutti
- Definire stili a livello di libreria in Angular
- Utilizzare il trigger SQL con le Azure Function
- Ottimizzare le performance delle collection con le classi FrozenSet e FrozenDictionary
- .NET Conference Italia 2023 - Milano e Online
- Come EF 8 ha ottimizzato le query che usano il metodo Contains
- Ottimizzazione dei block template in Angular 17