我有一个Blazor WebAssembly(PWA)项目,它有一个单独的ASP.NET API,用于访问存储在数据库中的产品数据。调用/api/products/getAllProducts
端点需要几秒钟,因为有相当多的产品需要返回。这些产品数据每天由服务在服务器上更新一次。
产品数据需要被存储以供客户端离线使用,所以我正在实现IndexedDB以用于本地产品存储。这段代码有些未经测试,因为它目前只是位于产品页面的代码块中:
private IEnumerable<Product>? products;
protected override async Task OnInitializedAsync()
{
// get products from the api
products = await Http.GetFromJsonAsync<Product[]>("/api/products/GetAllProducts");
// add products fetched from api into local storage
using var db = await DbFactory.Create<IndexDb>();
db.allProducts.Clear();
foreach ( var product in products)
{
db.allProducts.Add(product);
}
await db.SaveChanges();
// get products from local storage
products = db.allProducts;
}
字符串
我的问题是,我应该什么时候从API调用刷新/重新填充我的本地IndexedDB产品列表而不减慢/停止我的应用程序?在blazor应用程序启动时(这甚至是可能的)?当他们打开包含所有产品的页面时?实际上,我只需要每天更新一次产品数据,当他们当天第一次打开它时。
1条答案
按热度按时间kuarbcqp1#
您可以在MainLayout.razor中实现此功能
字符串