Negli scorsi script ci siamo occupati di Output Cache in ASP.NET Core 7, e abbiamo iniziato ad apprezzarne la flessibilità e semplicità di configurazione. Abbiamo però trascurato un aspetto fondamentale per questo tipo di funzionalità: per quanto tempo una determinata risposta deve rimanere in cache?
Per default, la durata della cache è di un minuto, tuttavia possiamo facilmente modificare questa impostazione all'interno del solito metodo CacheOutput, quando stiamo definendo un endpoint di Minimal API:
app.MapGet("/cacheDemoInline",
(string name) => $"Hello, {name}, time is {DateTime.Now.ToLongTimeString()}")
.CacheOutput(builder =>
{
builder.Expire(TimeSpan.FromSeconds(10));
});Avere questa impostazione "inline" è sicuramente molto comodo, ma risulta impraticabile quando il numero degli endpoint aumenta, soprattutto se vogliamo mantenere una certa consistenza nel comportamento della nostra applicazione.
In questi casi, allora, è molto utile definire delle policy centralizzate, che poi possiamo utilizzare nei vari endpoint. Possiamo farlo in fase di registrazione del servizio:
builder.Services.AddOutputCache(config =>
{
config.AddPolicy("shortCache", policy =>
{
policy.Expire(TimeSpan.FromSeconds(30));
});
config.AddPolicy("longCache", policy =>
{
policy.Expire(TimeSpan.FromMinutes(2));
});
});Nello snippet in alto abbiamo definito due policy, shortCache e longCache, che possiamo poi referenziare tramite il loro nome, ove necessario:
app.MapGet("/cacheDemoShort",
(string name) => $"Hello, {name}, time is {DateTime.Now.ToLongTimeString()}")
.CacheOutput("shortCache");
app.MapGet("/cacheDemoLong",
(string name) => $"Hello, {name}, time is {DateTime.Now.ToLongTimeString()}")
.CacheOutput("longCache");Tra tutte le policy, quella utilizzata per default è denominata Base Policy, e anch'essa può essere modificata in maniera simile:
builder.Services.AddOutputCache(config =>
{
config.AddBasePolicy(policy =>
{
policy.Expire(TimeSpan.FromSeconds(10));
});
// .. altre policy qui ..
});Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Costruire endpoint SSE in ASP.NET Core
Validazione personalizzata nelle Minimal API di ASP.NET Core
Logica Graceful Degradation in HTML e CSS
Impostare automaticamente l'altezza del font tramite CSS
Building Custom Developer Agents
Keynote .NET Conference Italia 2025
Bloccare il traffico di rete in uscita dal runner di GitHub
Esplorare database e container con Azure Cosmos DB Shell
Utilizzo delle stepped value functions nel CSS
Utilizzare il top layer in HTML
Utilizzare @property per animare nativamente un oggetto HTML tramite CSS
Effettuare la ricerca di testo nascosto in una pagina web con Javascript
I più letti di oggi
- Personalizare l'icona e le funzionalità di un sito web per iOS e IE
- Effettuare il multi-checkout in linea nelle pipeline di Azure DevOps
- Accedere a risorse e immagini in Windows Store app di Windows 8
- Effetto turnstile su tutte le pagine con il Windows Phone Toolkit
- Alleggerire le applicazioni WPF sfruttando gli oggetti Freezable
- Permettere il Drag-and-drop solo su zone predefinite con Silverlight 2.0
- Accedere a dati esposti con WebService con Silverlight 1.0
- Utilizzare dati in formato XML in XAML


