Nello scorso script (https://www.aspitalia.com/script/1443/Sfruttare-Output-Cache-ASP.NET-Core-Controller.aspx) abbiamo visto come, grazie all'attributo OutputCache, possiamo attivare questa funzionalità anche con i controller di ASP.NET Core 7.
Sebbene la sintassi basata su attributi possa sembrare un po' più laboriosa delle lambda expression, uno dei vantaggi dei controller è la possibilità di applicare le impostazioni a livello di controller, così che abbiano effetto su tutte le action contenute al suo interno:
[Route("api/[controller]")] [ApiController] // tutte le action vanno in cache con policy shortCache [OutputCache(PolicyName = "shortCache")] public class CacheController : ControllerBase { [HttpGet("cached")] // questa action va in cache anche senza l'attribute OutputCache public IActionResult Cached(string name) { return this.Ok($"Hello, {name}, time is {DateTime.Now.ToLongTimeString()} and this is cached"); } [HttpGet("notcached")] // per questa action disabilitiamo la cache [OutputCache(NoStore = true)] public IActionResult NotCached(string name) { return this.Ok($"Hello, {name}, time is {DateTime.Now.ToLongTimeString()} and this is not cached"); } }
Nel nostro esempio, abbiamo specificato che tutte le action di CacheController dovranno usare la policy denominata shortCache e, se provassimo a eseguire il codice, vedremmo che effettivamente l'endpoint Cached si comporta come ci aspettiamo.
Nel caso in cui dovessimo disabilitare la cache per alcune action, possiamo impostare il parametro NoStore a true, come abbiamo fatto per NotCached.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Recuperare App Service cancellati su Azure
Garantire la provenienza e l'integrità degli artefatti prodotti su GitHub
Eseguire i worklow di GitHub su runner potenziati
Generare token per autenicarsi sulle API di GitHub
Gestire la cancellazione di una richiesta in streaming da Blazor
Usare lo spread operator con i collection initializer in C#
Usare le collection expression per inizializzare una lista di oggetti in C#
Usare un KeyedService di default in ASP.NET Core 8
Utilizzare EF.Constant per evitare la parametrizzazione di query SQL
Creare un'applicazione React e configurare Tailwind CSS
Sviluppare un'interfaccia utente in React con Tailwind CSS e Preline UI
Sostituire la GitHub Action di login su private registry