Таким образом, я пытаюсь вернуть все бренды для определенных c категорий через кеш.
Когда все товары возвращаются через первое извлечение из кэша, это быстро, но возврат списка брендов очень медленный. Я думаю, что это может быть связано с l oop, но не совсем уверен.
Вот код
var productsAll = _cacheManager.Get("CACHED_CATEGORY_ALL_PRODUCTS" + categoryId, () =>
{
return _productService.SearchProducts(out filterableSpecificationAttributeOptionIds,
true,
categoryIds: categoryIds,
storeId: _storeContext.CurrentStore.Id,
visibleIndividuallyOnly: true,
featuredProducts: _catalogSettings.IncludeFeaturedProductsInNormalLists ? null : (bool?)false,
priceMin: minPriceConverted,
priceMax: maxPriceConverted,
//filteredSpecs: alreadyFilteredSpecOptionIds,
orderBy: 0,
pageIndex: 0,
pageSize: 1000000); // all products
});
var brands = new List<Manufacturer>();
var defaultBrandsCacheKey = "category-brands-cache-" + categoryId.ToString();
brands = _cacheManager.Get(defaultBrandsCacheKey, () =>
{
var brandsList = new List<Manufacturer>();
foreach (var p in productsAll)
{
var b = _manufacturerService.GetProductManufacturersByProductId(p.Id).FirstOrDefault();
if (b != null && b.Manufacturer != null)
{
if (!brandsList.Contains(b.Manufacturer))
brandsList.Add(b.Manufacturer);
}
}
return brandsList.OrderBy(x => x.Name).ToList();
});
Кто-нибудь знает, почему возвращение списка брендов действительно медленно каждый раз Я ожидаю, что это будет медленно в первый раз, но не в следующий раз. Спасибо