Использование кэша выходных данных Redis
Создание HTML,возвращенного клиенту для сложного запроса, может занять некоторое время и требовать запросов к нескольким микрослужбам. Этот HTML-код или другой выходной код является общим кандидатом для кэширования.
Представьте, что вы работаете на открытом оборудовании розничной торговли. Новое веб-приложение включает микрослужбу, которая создает пользовательский интерфейс и возвращает HTML в браузеры. Вы хотите убедиться, что он работает оптимально.
В этом уроке вы узнаете о кэшировании выходных данных и о том, как реализовать его в микрослужбе с помощью Redis и .NET Aspire.
Что такое кэш выходных данных?
Используйте кэш выходных данных, если вы хотите хранить полные HTML-страницы в веб-приложениях или в минимальных API меньшей части выходных данных. Вы получаете оптимальные улучшения производительности путем кэширования страниц, запрашиваемых часто, например домашней страницы вашего приложения.
Настройка кэширования выходных данных в .NET Aspire
Действия по установке и настройке совпадают с компонентом распределенного кэширования, за исключением того, что вы устанавливаете компонент кэширования выходных данных в потребляющих проектах.
Настройка узла приложения
На узле приложения установите тот же компонент размещения Redis, что и для распределенного кэширования:
dotnet add package Aspire.Hosting.Redis --prerelease
Код регистрации точно такой же. Этот код необходимо добавить только в том случае, если вы еще не добавили его для распределенного кэширования:
// Register the cache
var redis = builder.AddRedis("redis");
// Initiate the consuming project and pass the cache
builder.AddProject<Projects.ConsumingProject>()
.WithReference(redis);
Настройка используемых проектов
В проектах микрослужб добавьте компонент кэширования выходных данных Redis:
dotnet add package Aspire.StackExchange.Redis.OutputCaching
Использование кэша выходных данных
Как правило, используемый проект — это микрослужба, которая создает пользовательский интерфейс приложения. Например, это может быть ASP.NET или веб-приложение Blazor или минимальный API. Необходимо добавить кэш выходных данных в приложение, а затем добавить ПО промежуточного слоя в проект следующим образом:
// Add the output cache
builder.AddRedisOutputCache();
// Build the app
var app = builder.Build();
// Add the middleware
app.UseOutputCache();
Кэширование завершенных страниц
Чтобы кэшировать страницу, используйте OutputCache
атрибут, например на этой странице Razor:
@page "/"
@attribute [OutputCache(Duration = 10)]
<PageTitle>Welcome to Contoso</PageTitle>
<h1>Welcome to Contoso</h1>
This is our homepage. The time is: @DateTime.Now
Кэширование выходных данных в минимальном API
Минимальный API — это проект, который быстро реализует веб-службу HTTP. Он упрощает работу кода, необходимого для создания API RESTful, избегая формирования шаблонов и ненужных контроллеров. Вместо этого действия и маршруты API объявляются напрямую.
В этом примере возвращается простой ответ, когда пользователь запрашивает идентификатор продукта:
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();
app.MapGet("/products/{ProdId}",
(int ProdId) => $"The product ID is {ProdId}.");
app.Run();
Чтобы кэшировать этот ответ, вызовите CacheOutput()
метод или примените OutputCache
атрибут в вызове MapGet
:
app.MapGet("/products/{ProdId}", (int ProdId) => $"The product ID is {ProdId}.").CacheOutput();
app.MapGet("/products/{ProdId}", [OutputCache] (int ProdId) => $"The product ID is {ProdId}.");
Подробнее
- Компонент кэширования выходных данных .NET Aspire StackExchange Redis
- Конфигурация Redis StackExchange