Een Redis-uitvoercache gebruiken
De constructie van de HTML die wordt geretourneerd naar een client voor een complexe aanvraag kan enige tijd in beslag nemen en query's naar meerdere microservices vereisen. Deze HTML- of andere uitvoercode is een veelgebruikte kandidaat voor caching.
Stel dat u werkt voor een winkel voor buitenapparatuur. Uw nieuwe web-app bevat een microservice waarmee de gebruikersinterface wordt samengesteld en HTML wordt geretourneerd naar browsers. U wilt er zeker van zijn dat het optimaal presteert.
In deze les leert u meer over uitvoercaching en hoe u deze implementeert in een microservice met behulp van Redis en .NET Aspire.
Wat is een uitvoercache?
Gebruik een uitvoercache wanneer u volledige HTML-pagina's wilt opslaan in web-apps of, in minimale API's, kleinere delen van uitvoer. U krijgt optimale prestatieverbeteringen door pagina's in de cache op te slaan die regelmatig worden aangevraagd, zoals de startpagina van uw app.
Uitvoercache instellen in .NET Aspire
Installatie- en configuratiestappen zijn hetzelfde als voor het gedistribueerde cacheonderdeel, behalve dat u het onderdeel uitvoercaching installeert in de verbruikende projecten.
De app-host configureren
Installeer op de app-host hetzelfde Redis-hostingonderdeel als u hebt gebruikt voor gedistribueerde caching:
dotnet add package Aspire.Hosting.Redis --prerelease
De registratiecode is precies hetzelfde. U hoeft deze code alleen toe te voegen als u deze nog niet hebt toegevoegd voor gedistribueerde caching:
// Register the cache
var redis = builder.AddRedis("redis");
// Initiate the consuming project and pass the cache
builder.AddProject<Projects.ConsumingProject>()
.WithReference(redis);
De verbruikende projecten configureren
Voeg in de microserviceprojecten het redis-uitvoercachingonderdeel toe:
dotnet add package Aspire.StackExchange.Redis.OutputCaching
Een uitvoercache gebruiken
Meestal is het verbruikende project de microservice waarmee de gebruikersinterface van uw app wordt gegenereerd. Het kan bijvoorbeeld een ASP.NET of Blazor-web-app of een minimale API zijn. U moet de uitvoercache toevoegen aan de app en vervolgens middleware toevoegen aan het project als volgt:
// Add the output cache
builder.AddRedisOutputCache();
// Build the app
var app = builder.Build();
// Add the middleware
app.UseOutputCache();
Volledige pagina's opslaan in cache
Als u een pagina in de cache wilt opslaan, gebruikt u het OutputCache
kenmerk, zoals in deze Razor-pagina:
@page "/"
@attribute [OutputCache(Duration = 10)]
<PageTitle>Welcome to Contoso</PageTitle>
<h1>Welcome to Contoso</h1>
This is our homepage. The time is: @DateTime.Now
Uitvoer in cache opslaan in een minimale API
Een minimale API is een project dat snel een HTTP-webservice implementeert. Het verkleint de code die nodig is om een RESTful-API te bouwen door het voorkomen van scaffolding en onnodige controllers. In plaats daarvan worden API-acties en -routes rechtstreeks gedeclareerd.
In dit voorbeeld wordt een eenvoudig antwoord geretourneerd wanneer de gebruiker de id van een product aanvraagt:
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapGet("/products/{ProdId}",
(int ProdId) => $"The product ID is {ProdId}.");
app.Run();
Als u dit antwoord in de cache wilt opslaan, roept u de CacheOutput()
methode aan of past u het OutputCache
kenmerk toe in de MapGet
aanroep:
app.MapGet("/products/{ProdId}", (int ProdId) => $"The product ID is {ProdId}.").CacheOutput();
app.MapGet("/products/{ProdId}", [OutputCache] (int ProdId) => $"The product ID is {ProdId}.");