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
Short-circuiting della Pipeline in ASP.NET Core
Creare form tipizzati con Angular
Eseguire un metodo asincrono dopo il set di una proprietà in Blazor 8
Criptare la comunicazione con mTLS in Azure Container Apps
Utilizzare l'operatore GroupBy come ultima istruzione di una query LINQ in Entity Framework
Utilizzare la session affinity con Azure Container Apps
Load test di ASP.NET Core con k6
Gestire domini wildcard in Azure Container Apps
Utilizzare Model as a Service su Microsoft Azure
Registrare servizi multipli tramite chiavi in ASP.NET Core 8
Sfruttare lo streaming di una chiamata Http da Blazor
Eseguire query manipolando liste di tipi semplici con Entity Framework Core
I più letti di oggi
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Windows Server 2003 SP1 Italiano
- Creare un modulo e un controller con AngularJS
- Build 2014: tutte le novità per gli sviluppatori in diretta da San Francisco
- Rilasciata la versione RTM di Windows Vista SP1