Se stiamo sviluppando un'applicazione che fa uso di chiamate AJAX per recuperare dati dal server, è bene inserire alcune direttive nella response che istruiscano il browser a non effettuare il caching del risultato.
Tipicamente tutti i browser gestiscono correttamente questa casistica, tranne Internet Explorer, mentre gli helper Ajax di MVC inseriscono un timestamp in querystring così da produrre ogni volta url differenti.
Se però vogliamo risolvere a monte il problema, possiamo sfruttare un semplice attributo che imposti correttamente gli header della response:
public class NoCacheActionFilter : ActionFilterAttribute { public override void OnResultExecuting(ResultExecutingContext filterContext) { filterContext.HttpContext.Response.Cache .SetExpires(DateTime.UtcNow.AddDays(-1)); filterContext.HttpContext.Response.Cache .SetValidUntilExpires(false); filterContext.HttpContext.Response.Cache .SetRevalidation(HttpCacheRevalidation.AllCaches); filterContext.HttpContext.Response.Cache .SetCacheability(HttpCacheability.NoCache); filterContext.HttpContext.Response.Cache.SetNoStore(); filterContext.HttpContext.Response.CacheControl = "no-cache"; base.OnResultExecuting(filterContext); } }
A questo punto ci sarà sufficiente applicarlo ai controller o alle action che tipicamente invochiamo tramite AJAX:
[NoCacheActionFilter] public class MyAjaxController : Controller { ... }
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Utilizzare parametri a livello di controller nel routing di ASP.NET Core
Impostare il tema light o dark utilizzando i CSS
Gestire dati sensibili nella configurazione in ASP.NET Core
Utilizzare il metodo Chunk per creare blocchi di oggetti di uguali dimensioni partendo da una lista
Montare blob e file share su Azure App Service
Abilitare automaticamente Dependabot in tutti i repository di una organizzazione su GitHub
Migrare un progetto ASP.NET Core da .NET 6 a .NET 7
Le novità di Angular 14
Gestire il breaking change di Entity Framework Core 7 con tabelle che usano identity e trigger
Caricare automaticamente i dati delle relazioni in EF Core 6
Scoprire le ottimizzazioni di Entity Framework Core in fase di scrittura di un solo record
Health monitoring con Azure Container App
I più letti di oggi
- Taggare la output cache in base al routing in ASP.NET Core
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- .NET Conference Italia 2022 - Milano e Online
- Silverlight su mobile: Nokia
- Visual Studio 2010 e .NET Framework 4.0: beta 2 e data di release RTM
- Anteprima del Service Pack 1 di WCF RIA Services: spunta il supporto all'italiano
- Disponibile al download la versione finale di Internet Explorer 9
- Windows Phone 'Mango' beta presto nei device ufficiali?