Nozioni di base sull'output caching
Memorizzi nella cache le risposte per ridurre il lavoro.
Nozioni di base sull'output caching è una lezione C# Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento C# Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso C# Academy include 4 lezioni in totale.
Che cos'è il caching dell'output
Il caching dell'output memorizza l'intera risposta HTTP di un endpoint, così le richieste successive vengono servite dalla cache senza eseguire nuovamente il gestore. Questo riduce notevolmente la latenza e il carico per gli endpoint con molte operazioni di lettura.
// First call -> handler runs, response stored
// Next calls -> response served from cacheCaching dell'output e caching della risposta
Il caching dell'output integrato, aggiunto in .NET 7, memorizza le risposte sul server e offre un controllo completo. Il precedente caching della risposta invia soltanto gli header HTTP della cache e si affida al client o ai proxy perché li rispettino.
// Output caching: server-side store you control
// Response caching: just Cache-Control headersAddOutputCache
Registri il servizio con AddOutputCache.
builder.Services.AddOutputCache();UseOutputCache
Aggiunga il middleware alla pipeline con UseOutputCache. Lo posizioni dopo il routing e, se presente, dopo CORS.
var app = builder.Build();
app.UseOutputCache();
app.MapControllers();CacheOutput su un endpoint
Abiliti il caching per un endpoint con CacheOutput (minimal API) oppure con l'attributo [OutputCache] (controller).
app.MapGet("/products", GetProducts)
.CacheOutput();
// Controller:
// [OutputCache]
// public IActionResult Get() => Ok(...);Impostazione della scadenza
Controlli per quanto tempo una risposta rimane nella cache con Expire.
app.MapGet("/products", GetProducts)
.CacheOutput(policy => policy.Expire(TimeSpan.FromSeconds(30)));Cosa viene memorizzato nella cache
Per impostazione predefinita vengono memorizzate nella cache solo le richieste GET e HEAD con stato 200, e solo quando non sono coinvolti Set-Cookie né meccanismi di autorizzazione: memorizzare per errore nella cache risposte autenticate e specifiche dell'utente è pericoloso.
// Cached by default: GET/HEAD, 200, no cookies/authVariazione in base alla stringa di query
Di solito due richieste allo stesso percorso con stringhe di query diverse devono essere memorizzate separatamente nella cache. Utilizzi SetVaryByQuery.
app.MapGet("/search", Search)
.CacheOutput(policy => policy
.Expire(TimeSpan.FromSeconds(60))
.SetVaryByQuery("q", "page"));Variazione in base all'header
È possibile variare la chiave della cache in base agli header, ad esempio per fornire una copia diversa della cache per ogni valore di Accept-Language.
policy.SetVaryByHeader("Accept-Language");Una policy di base per tutto
AddBasePolicy applica un'impostazione predefinita a ogni endpoint, che i singoli endpoint possono comunque sovrascrivere.
builder.Services.AddOutputCache(options =>
{
options.AddBasePolicy(policy =>
policy.Expire(TimeSpan.FromSeconds(10)));
});Disabilitazione per un endpoint
Se una policy di base memorizza tutto nella cache, escluda gli endpoint dinamici con NoCache.
app.MapGet("/cart", GetCart)
.CacheOutput(policy => policy.NoCache());Verifica rapida
Verifichi la differenza tra le due funzionalità di caching.
Riepilogo
Ha appreso le nozioni di base del caching dell'output:
AddOutputCache+UseOutputCacheabilitano il caching lato server.CacheOutput/[OutputCache]abilitano il caching per gli endpoint;Expirene imposta la durata.- Per impostazione predefinita vengono memorizzate nella cache solo le risposte GET/HEAD con stato 200, senza autenticazione né cookie.
SetVaryByQueryeSetVaryByHeaderdeterminano la chiave della cache.
Prossimo argomento: policy della cache e invalidazione.
Domande Frequenti
La lezione «Nozioni di base sull'output caching» è gratuita?
Sì — il testo completo di «Nozioni di base sull'output caching» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso C# Academy, passa a CoddyKit PRO. Il corso C# Academy include 4 lezioni in totale.
Cosa imparerò in «Nozioni di base sull'output caching»?
Memorizzi nella cache le risposte per ridurre il lavoro. Eserciti C# Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare C# Academy?
Non è richiesta alcuna esperienza precedente. C# Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.
Quanto tempo richiede la lezione «Nozioni di base sull'output caching»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione C# Academy?
Sì. Ogni lezione C# Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Algoritmi di limitazione della frequenza
- Configurazione del middleware di limitazione della frequenza
- Nozioni di base sull'output caching
- Policy e invalidazione della cache