Definire le impostazioni di cache a livello di controller in ASP.NET Core 7

di Marco De Sanctis, in ASP.NET Core,

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

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi