0Pricing
C# Academy · Lección

Conceptos básicos del almacenamiento en caché de salida

Almacene en caché las respuestas para reducir el trabajo.

Conceptos básicos del almacenamiento en caché de salida es una lección gratuita de C# Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de C# Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de C# Academy incluye 4 lecciones en total.

¿Qué es la caché de salida?

La caché de salida almacena la respuesta HTTP completa de un endpoint, de modo que las solicitudes repetidas se sirven desde la caché sin volver a ejecutar el controlador. Esto reduce considerablemente la latencia y la carga en endpoints con muchas lecturas.

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

Caché de salida frente a caché de respuestas

La caché de salida integrada, incorporada en .NET 7, almacena las respuestas en el servidor y le proporciona control total. La antigua caché de respuestas solo emite encabezados HTTP de caché y depende de que el cliente o los proxies los respeten.

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

AddOutputCache

Registre el servicio con AddOutputCache.

builder.Services.AddOutputCache();

UseOutputCache

Añada el middleware a la canalización con UseOutputCache. Colóquelo después del enrutamiento y, si está presente, después de CORS.

var app = builder.Build();

app.UseOutputCache();

app.MapControllers();

CacheOutput en un endpoint

Opte por incluir un endpoint en la caché mediante CacheOutput (minimal API) o el atributo [OutputCache] (controladores).

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

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

Configurar una expiración

Controle durante cuánto tiempo permanece una respuesta en la caché con Expire.

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

Qué se almacena en caché

De forma predeterminada, solo se almacenan en caché las solicitudes GET y HEAD con estado 200, y solo cuando no intervienen Set-Cookie ni la autorización; almacenar por error respuestas autenticadas y específicas de un usuario es peligroso.

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

Variar según la cadena de consulta

Dos solicitudes a la misma ruta con cadenas de consulta diferentes normalmente deben almacenarse por separado. Use SetVaryByQuery.

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

Variar según el encabezado

Puede variar la clave de caché según los encabezados; por ejemplo, para servir una copia en caché diferente por cada Accept-Language.

policy.SetVaryByHeader("Accept-Language");

Una política base para todo

AddBasePolicy aplica un valor predeterminado a todos los endpoints, que los endpoints individuales aún pueden sobrescribir.

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

Deshabilitar en un endpoint

Si una política base almacena todo en caché, excluya los endpoints dinámicos mediante NoCache.

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

Comprobación rápida

Confirme la diferencia entre las dos funcionalidades de caché.

Resumen

Ha aprendido los conceptos básicos del almacenamiento en caché de salida:

  • AddOutputCache + UseOutputCache habilitan el almacenamiento en caché en el servidor.
  • CacheOutput / [OutputCache] incluyen los endpoints en la caché; Expire establece la duración.
  • De forma predeterminada, solo se almacenan en caché las respuestas GET/HEAD 200 sin autorización ni cookies.
  • SetVaryByQuery y SetVaryByHeader determinan la clave de caché.

A continuación: políticas de caché e invalidación.

Preguntas frecuentes

¿La lección «Conceptos básicos del almacenamiento en caché de salida» es gratis?

Sí — el texto completo de «Conceptos básicos del almacenamiento en caché de salida» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de C# Academy, actualiza a CoddyKit PRO. El curso de C# Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Conceptos básicos del almacenamiento en caché de salida»?

Almacene en caché las respuestas para reducir el trabajo. Practicas C# Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar C# Academy?

No se requiere experiencia previa. C# Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.

¿Cuánto tiempo toma la lección «Conceptos básicos del almacenamiento en caché de salida»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de C# Academy?

Sí. Cada lección de C# Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Algoritmos de limitación de tasa
  2. Configuración del middleware de limitación de tasa
  3. Conceptos básicos del almacenamiento en caché de salida
  4. Políticas e invalidación de caché
← Volver a C# Academy