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
Utilizzare QuickGrid di Blazor con Entity Framework
Miglioramenti nelle performance di Angular 16
Utilizzare Tailwind CSS all'interno di React: installazione
Testare l'invio dei messaggi con Event Hubs Data Explorer
Effettuare il refresh dei dati di una QuickGrid di Blazor
Usare un KeyedService di default in ASP.NET Core 8
Usare una container image come runner di GitHub Actions
Utilizzare EF.Constant per evitare la parametrizzazione di query SQL
Gestione dei nomi con le regole @layer in CSS
Installare le Web App site extension tramite una pipeline di Azure DevOps
Supporto ai tipi DateOnly e TimeOnly in Entity Framework Core
Utilizzare il nuovo modello GPT-4o con Azure OpenAI