我正在嘗試學習 .Net Core 中的快取,并閱讀了記憶體快取中的內容,我發現這很容易。但是,假設一個方法回傳所有員工,但您不想回傳所有員工,而是一次說 10 個。所以 API 方法會有一個引數。
我可以通過記憶體快取來做到這一點嗎?
這些是我將關注的文章: https://www.c-sharpcorner.com/article/how-to-implement-caching-in-the-net-core-web-api-application/ https://code -maze.com/aspnetcore-in-memory-caching/
uj5u.com熱心網友回復:
您可以在實際快取專案之前對串列/可查詢進行分頁,以便專案快取這些組合的專案,并且在您要求更多專案后,它將獲取這些專案并快取。并且分頁引數值將從 API 端點提供。
分頁示例:
public static async Task<IPagedList<T>> ToPagedListAsync<T>(this IQueryable<T> source, int pageIndex, int pageSize, bool getOnlyTotalCount = false)
{
if (source == null)
return new PagedList<T>(new List<T>(), pageIndex, pageSize);
//min allowed page size is 1
pageSize = Math.Max(pageSize, 1);
var count = await source.CountAsync();
var data = new List<T>();
if (!getOnlyTotalCount)
data.AddRange(await source.Skip(pageIndex * pageSize).Take(pageSize).ToListAsync());
return new PagedList<T>(data, pageIndex, pageSize, count);
}
快取分頁組合的值:
var cacheKey = _cacheManager.PrepareKeyForDefaultCache("cachekey.dataitems.byitemsid.{0}-{1}-{2}", elementId, pageIndex, pageSize);
return await _cacheManager.GetAsync(cacheKey, async () =>
{
var query = from si in _myItemRepository.Table
where si.SliderId == sliderId
orderby si.DisplayOrder
select si;
return await query.ToPagedListAsync(pageIndex, pageSize);
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/523531.html
