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 gRPC su App Service di Azure
Potenziare Azure AI Search con la ricerca vettoriale
Effettuare il binding di date in Blazor
Creazione di componenti personalizzati in React.js con Tailwind CSS
Utilizzare QuickGrid di Blazor con Entity Framework
Creazione di plugin per Tailwind CSS: espandere le Funzionalità del Framework
Utilizzare Copilot con Azure Cosmos DB
Utilizzare Azure AI Studio per testare i modelli AI
Usare le navigation property in QuickGrid di Blazor
Persistere la ChatHistory di Semantic Kernel in ASP.NET Core Web API per GPT
C# 12: Cosa c'è di nuovo e interessante
Creare gruppi di client per Event Grid MQTT