Я создал ViewComponent
для отображения List<Product>
, список оценен, взяты данные из службы REST API
, это моя реализация класса:
public class ProductsViewComponent : ViewComponent
{
private readonly HttpClient _client;
public ProductsViewComponent(HttpClient client)
{
_client = client ?? throw new ArgumentNullException(nameof(client));
}
public async Task<IViewComponentResult> InvokeAsync(string date)
{
using (var response = await _client.GetAsync($"/"product/get_products/{date}"))
{
response.EnsureSuccessStatusCode();
var products = await response.Content.ReadAsAsync<List<Product>>();
return View(products);
}
}
}
Я загружаю Список в HTML-таблицу, которая доступна внутри папки Components
: Views\Shared\Components\Products\Default.cshtml
.
В каждом View
, который должен отображать Products
, который я сделал:
@await Component.InvokeAsync("Products", new { date = myDate })
REST API
вызывается с использованием HttpClient
, настроенного в Startup.cs
следующим образом:
services.AddHttpClient<ProductsViewComponent>(c =>
{
c.BaseAddress = new Uri('https://api.myservice.com');
});
Это хорошо работает, но основная проблема заключается в том, что каждый раз, когда пользователь перезагружает страницу или, возможно, заходит в другое представление, для которого требуется отобразить список продуктов, приложение выполняет еще один API
вызов.
Можно ли сохранить список в чем-то вроде кеша и предотвратить повторный вызов API
, если дата равна предыдущей выбранной дате?
Я учусь ASP.NET Core
, поэтому я не очень разбираюсь в этом аргументе.
Заранее спасибо за любую помощь.