L'output caching è una feature di ASP.NET fin dalla primissima versione, che consente di migliorare in maniera notevole la scalabilità delle nostre applicazioni: consiste infatti nell'effettuare il caching dell'intera risposta così da riutilizzarla in successive richieste senza che queste debbano essere processate dal server.
Abbiamo già visto in un vecchio script (https://www.aspitalia.com/script/993/Migliorare-Performance-Applicazione-ASP.NET-MVC-Sfruttando-Cache.aspx) come applicarla ad ASP.NET MVC. Purtroppo ASP.NET Web API non possiede nativamente questa funzionalità, quindi dovremo utilizzare una libreria esterna.
Il package NuGet che sembra essere più famoso porta il nome di "ASP.NET Web API CacheOutput", è un progetto open source (https://github.com/filipw/AspNetWebApi-OutputCache) e possiamo installarlo con il seguente comando:
Install-Package Strathweb.CacheOutput.WebApi2
A questo punto possiamo marcare una Action (o un intero controller) con l'attributo CacheOutput:
[CacheOutput(ClientTimeSpan = 600, ServerTimeSpan = 600)] public string Get() { return DateTime.Now.ToLongTimeString(); }
In base al codice dell'esempio precedente, l'output verrà mantenuto in cache sul server per 10 minuti, e la risposta conterrà l'header Cache-Control così che la risposta venga memorizzata anche lato client. Ovviamente è lecito aggiungere questo attributo solo sulle action di tipo GET, visto che PUT, POST, DELETE e PATCH non supportano cache.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Modificare i metadati nell'head dell'HTML di una Blazor Web App
Miglioramenti nell'accessibilità con Angular CDK
Generare la software bill of material (SBOM) in GitHub
Rinnovare il token di una GitHub App durante l'esecuzione di un workflow
Recuperare App Service cancellati su Azure
Potenziare la ricerca su Cosmos DB con Full Text Search
Rendere le variabili read-only in una pipeline di Azure DevOps
Ottimizzazione dei block template in Angular 17
Eseguire un metodo asincrono dopo il set di una proprietà in Blazor 8
Gestione dell'annidamento delle regole dei layer in CSS
Esporre i propri servizi applicativi con Semantic Kernel e ASP.NET Web API
Generare un hash con SHA-3 in .NET