Nello scorso script (https://www.aspitalia.com/script/1443/Sfruttare-Output-Cache-ASP.NET-Core-Controller.aspx) abbiamo visto come, grazie all'attributo OutputCache, possiamo attivare questa funzionalità anche con i controller di ASP.NET Core 7.
Sebbene la sintassi basata su attributi possa sembrare un po' più laboriosa delle lambda expression, uno dei vantaggi dei controller è la possibilità di applicare le impostazioni a livello di controller, così che abbiano effetto su tutte le action contenute al suo interno:
[Route("api/[controller]")]
[ApiController]
// tutte le action vanno in cache con policy shortCache
[OutputCache(PolicyName = "shortCache")]
public class CacheController : ControllerBase
{
[HttpGet("cached")]
// questa action va in cache anche senza l'attribute OutputCache
public IActionResult Cached(string name)
{
return this.Ok($"Hello, {name}, time is {DateTime.Now.ToLongTimeString()} and this is cached");
}
[HttpGet("notcached")]
// per questa action disabilitiamo la cache
[OutputCache(NoStore = true)]
public IActionResult NotCached(string name)
{
return this.Ok($"Hello, {name}, time is {DateTime.Now.ToLongTimeString()} and this is not cached");
}
}Nel nostro esempio, abbiamo specificato che tutte le action di CacheController dovranno usare la policy denominata shortCache e, se provassimo a eseguire il codice, vedremmo che effettivamente l'endpoint Cached si comporta come ci aspettiamo.
Nel caso in cui dovessimo disabilitare la cache per alcune action, possiamo impostare il parametro NoStore a true, come abbiamo fatto per NotCached.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Utilizzare le View Transition API di JavaScript
Creare un file Zip partendo da uno stream sfruttando le classi del namespace System.IO.Compression
Creare una toolbox condivisa per gli agenti in Microsoft Foundry
Testare le API di Azure Resource Manager con API Playground
Utilizzare i named query filter di Entity Framework
Integrare email esterne con Azure Functions e Managed Connectors
From Data to Insight: Exploratory Data Analysis with Python, VS Code and SQL MCP Server
Raggruppamento degli aggiornamenti di dipendenze tra directory in un monorepo con Dependabot
Ciclo di vita risorse con .NET Aspire
Integrare il Docker Model Runner in un workflow di GitHub
Ricerca delle GitHub issue tramite operatori logici
Utilizzare le librerie native di .NET per comprimere uno o più file in formato ZIP
I più letti di oggi
- Effettuare il multi-checkout in linea nelle pipeline di Azure DevOps
- Accedere a risorse e immagini in Windows Store app di Windows 8
- Alleggerire le applicazioni WPF sfruttando gli oggetti Freezable
- Permettere il Drag-and-drop solo su zone predefinite con Silverlight 2.0
- Consumare dati binari in realtime lato client con ASP.NET Core SignalR
- Effetto turnstile su tutte le pagine con il Windows Phone Toolkit
- Personalizare l'icona e le funzionalità di un sito web per iOS e IE
- Caricamenti veloci da CDN e fallback locale con ASP.NET Core
- Utilizzare dati in formato XML in XAML
- Accedere a dati esposti con WebService con Silverlight 1.0


