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
Creare un webhook in Azure DevOps
Autenticarsi in modo sicuro su Azure tramite GitHub Actions
Ottimizzare le performance delle collection con le classi FrozenSet e FrozenDictionary
Effettuare il refresh dei dati di una QuickGrid di Blazor
Utilizzare i primary constructor di C# per inizializzare le proprietà
Eseguire operazioni sui blob con Azure Storage Actions
Supportare il sorting di dati tabellari in Blazor con QuickGrid
Esporre i propri servizi applicativi con Semantic Kernel e ASP.NET Web API
Utilizzare EF.Constant per evitare la parametrizzazione di query SQL
Eseguire query per recuperare il padre di un record che sfrutta il tipo HierarchyID in Entity Framework
Utilizzare Model as a Service su Microsoft Azure
Sfruttare al massimo i topic space di Event Grid MQTT