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 Tailwind CSS all'interno di React: installazione
Generare velocemente pagine CRUD in Blazor con QuickGrid
Load test di ASP.NET Core con k6
Utilizzare Copilot con Azure Cosmos DB
Gestire i null nelle reactive form tipizzate di Angular
Utilizzare Model as a Service su Microsoft Azure
Eseguire operazioni sui blob con Azure Storage Actions
Migrare una service connection a workload identity federation in Azure DevOps
Utilizzare le collection expression in C#
Utilizzare il trigger SQL con le Azure Function
Aprire una finestra di dialogo per selezionare una directory in WPF e .NET 8
Migliorare la sicurezza dei prompt con Azure AI Studio