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
Recuperare App Service cancellati su Azure
Garantire la provenienza e l'integrità degli artefatti prodotti su GitHub
Usare le navigation property in QuickGrid di Blazor
Usare il colore CSS per migliorare lo stile della pagina
Filtrare i dati di una QuickGrid in Blazor con una drop down list
Simulare Azure Cosmos DB in locale con Docker
Introduzione alle Container Queries
Documentare i servizi REST con Swagger e OpenAPI con .NET 9
Generare HTML a runtime a partire da un componente Razor in ASP.NET Core
Utilizzare WhenEach per processare i risultati di una lista di task
Utilizzare DeepSeek R1 con Azure AI
Migliorare la sicurezza dei prompt con Azure AI Studio