Nello script precedente (https://www.aspitalia.com/script/1225/Attivare-Output-Caching-ASP.NET-Web-API.aspx) abbiamo introdotto ASP.NET Web API CacheOutput, una libreria open source che permette di attivare l'output caching anche nei controller Web API.
Una caratteristica interessante di questa libreria è la gestione automatica dell'invalidazione della cache. Riprendiamo l'esempio che avevamo visto in precedenza, e decoriamo il controller con l'attributo AutoInvalidateCacheOutput.
[AutoInvalidateCacheOutput] public class ValuesController : ApiController { [CacheOutput(ClientTimeSpan = 600, ServerTimeSpan = 600)] public string Get() { ... } public void Post([FromBody]string value) { ... } public void Put(int id, [FromBody]string value) { ... } public void Delete(int id) { ... } }
L'effetto è quello di invalidare automaticamente la cache dell'action in GET quando viene eseguita una qualsiasi delle action di modifica, vale a dire PUT, PATCH, POST o DELETE.
Un controllo più preciso si ottiene tramite la funzionalità TryMatchType:
[AutoInvalidateCacheOutput(TryMatchType = true)] public class CustomersController : ApiController { [CacheOutput(ClientTimeSpan = 600, ServerTimeSpan = 600)] public IEnumerable<Customer> GetAll() { ... } [HttpPost] public void Create(Customer customer) { ... } [HttpPost] public void AddOrder(int id, Order order) { ... } }
In questo modo, infatti, l'output cache di un'action che restituisce dei Customer verrà invalidata solo dall'invocazione di un'action che accetta un oggetto dello stesso tipo in input, ossia la sola action Create nel nostro esempio.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Usare le variabili per personalizzare gli stili CSS
Creazione di componenti personalizzati in React.js con Tailwind CSS
Load test di ASP.NET Core con k6
Miglioramenti agli screen reader e al contrasto in Angular
Recuperare un elemento inserito nella cache del browser tramite API JavaScript
Effettuare chiamate con versioning da Blazor ad ASP.NET Core
Effettuare lo stream della risposta in ASP.NET Core tramite IAsyncEnumerable
Eseguire query manipolando le liste contenute in un oggetto mappato verso una colonna JSON
Applicare il versioning ai nostri endpoint ASP.NET Core Minimal API
Registrare servizi multipli tramite chiavi in ASP.NET Core 8
Trasformare qualsiasi backend in un servizio GraphQL con Azure API Management
Usare Refit e Polly in Blazor per creare client affidabili e fortemente tipizzati
I più letti di oggi
- I nuovi metodi degli array di ECMAScript 5
- Evitare (o ridurre) il repo-jacking sulle GitHub Actions
- Un custom control BoundField con dropdownlist
- .NET Core 3, C#8 and beyond
- Utilizzare long polling in HTML5 per richieste in real time
- Utilizzare le shortcut da tastiera con KeyboardAccelerator nella Universal Windows Platform
- Microsoft Security Bulletin MS05-048