0Pricing
C# Academy · Leçon

Bases de la mise en cache des sorties

Mettez les réponses en cache pour réduire le travail effectué.

Bases de la mise en cache des sorties est une leçon C# Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage C# Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours C# Academy comprend 4 leçons au total.

Qu’est-ce que la mise en cache de sortie ?

La mise en cache de sortie stocke la réponse HTTP complète d’un point de terminaison afin que les requêtes répétées soient servies depuis le cache sans réexécuter le gestionnaire. Cela réduit considérablement la latence et la charge des points de terminaison principalement dédiés à la lecture.

// First call -> handler runs, response stored
// Next calls -> response served from cache

Mise en cache de sortie ou mise en cache des réponses

La mise en cache de sortie intégrée, ajoutée dans .NET 7, stocke les réponses sur le serveur et vous en contrôlez entièrement le fonctionnement. L’ancienne mise en cache des réponses émet uniquement des en-têtes de cache HTTP et dépend du client ou des mandataires pour les respecter.

// Output caching: server-side store you control
// Response caching: just Cache-Control headers

AddOutputCache

Enregistrez le service avec AddOutputCache.

builder.Services.AddOutputCache();

UseOutputCache

Ajoutez l’intergiciel à la chaîne de traitement avec UseOutputCache. Placez-le après le routage et, le cas échéant, après CORS.

var app = builder.Build();

app.UseOutputCache();

app.MapControllers();

CacheOutput sur un point de terminaison

Activez la mise en cache d’un point de terminaison avec CacheOutput (API minimale) ou l’attribut [OutputCache] (contrôleurs).

app.MapGet("/products", GetProducts)
   .CacheOutput();

// Controller:
// [OutputCache]
// public IActionResult Get() => Ok(...);

Définir une expiration

Contrôlez pendant combien de temps une réponse reste en cache avec Expire.

app.MapGet("/products", GetProducts)
   .CacheOutput(policy => policy.Expire(TimeSpan.FromSeconds(30)));

Éléments mis en cache

Par défaut, seules les requêtes GET et HEAD dont le statut est 200 sont mises en cache, et uniquement lorsqu’aucun Set-Cookie ni aucune autorisation n’est impliqué : la mise en cache accidentelle de réponses destinées à des utilisateurs authentifiés et spécifiques à un utilisateur est dangereuse.

// Cached by default: GET/HEAD, 200, no cookies/auth

Faire varier selon la chaîne de requête

Deux requêtes vers le même chemin avec des chaînes de requête différentes doivent généralement être mises en cache séparément. Utilisez SetVaryByQuery.

app.MapGet("/search", Search)
   .CacheOutput(policy => policy
        .Expire(TimeSpan.FromSeconds(60))
        .SetVaryByQuery("q", "page"));

Faire varier selon l’en-tête

Vous pouvez faire varier la clé du cache selon les en-têtes, par exemple pour fournir une copie mise en cache différente per Accept-Language.

policy.SetVaryByHeader("Accept-Language");

Une stratégie de base pour tout

AddBasePolicy applique une valeur par défaut à chaque point de terminaison, que les points de terminaison individuels peuvent toujours remplacer.

builder.Services.AddOutputCache(options =>
{
    options.AddBasePolicy(policy =>
        policy.Expire(TimeSpan.FromSeconds(10)));
});

Désactiver pour un point de terminaison

Si une stratégie de base met tout en cache, excluez les points de terminaison dynamiques avec NoCache.

app.MapGet("/cart", GetCart)
   .CacheOutput(policy => policy.NoCache());

Vérification rapide

Vérifiez que vous comprenez la différence entre les deux fonctionnalités de mise en cache.

Récapitulatif

Vous avez découvert les bases de la mise en cache des réponses :

  • AddOutputCache + UseOutputCache activent la mise en cache côté serveur.
  • CacheOutput / [OutputCache] activent la mise en cache des points de terminaison ; Expire définit la durée.
  • Par défaut, seules les réponses GET/HEAD avec le statut 200 et sans authentification ni cookies sont mises en cache.
  • SetVaryByQuery et SetVaryByHeader déterminent la clé du cache.

Ensuite : les stratégies de cache et l’invalidation.

Questions Fréquemment Posées

La leçon « Bases de la mise en cache des sorties » est-elle gratuite ?

Oui — le texte complet de « Bases de la mise en cache des sorties » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours C# Academy, passe à CoddyKit PRO. Le cours C# Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Bases de la mise en cache des sorties » ?

Mettez les réponses en cache pour réduire le travail effectué. Tu pratiques C# Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer C# Academy ?

Aucune expérience préalable n'est requise. C# Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.

Combien de temps prend la leçon « Bases de la mise en cache des sorties » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon C# Academy ?

Oui. Chaque leçon C# Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Algorithmes de limitation du débit
  2. Configurer le middleware de limitation du débit
  3. Bases de la mise en cache des sorties
  4. Politiques de cache et invalidation
← Retour à C# Academy