Кэш NopCommerce очень медленно, когда l oop внутри - PullRequest
0 голосов
/ 23 марта 2020

Таким образом, я пытаюсь вернуть все бренды для определенных 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();
            });

Кто-нибудь знает, почему возвращение списка брендов действительно медленно каждый раз Я ожидаю, что это будет медленно в первый раз, но не в следующий раз. Спасибо

...