Как ускорить рабочий процесс с базой данных .Net - PullRequest
0 голосов
/ 30 октября 2019

У меня есть простой контроллер, который возвращает список продуктов. Требуется около 5-7 секунд, чтобы вернуть данные в первый раз, а затем 50-80 мс, но только если я запускаю его сразу (10-30 с) после первого, если я буду запускать его через 2-3 минуты, это будет снова через 5-7 с.

Я не храню этот список в кеше, поэтому я не могу понять, почему только в первый раз это занимает 5 секунд, а затем 50 мс.

Важно: тест, который я сделал, не на локальном хосте, а на производственном сервере. На локальном хосте это занимает 50 мс

Как я могу ускориться? Нужно ли вносить какие-либо изменения в мой код? Или IIS?

Мой код

 public List<PackageModel> GetPromotionOrDefaultPackageList(string domain)
 {
    List<DBProduct> DBPackageList = new List<DBProduct>();
    List<PackageModel> BllPackageList = new List<PackageModel>();
    try
    {
        using (CglDomainEntities _entities = new CglDomainEntities())
        {
            DBPackageList = _entities.DBProducts
                                     .Where(x => 
                             x.ProductGroup.Equals(domain + "-package") 
                             && x.IsPromotionProduct == true)
                                     .ToList();

             if (DBPackageList.Count == 0)
             {
                 DBPackageList = _entities.DBProducts
                                          .Where(x => 
                             x.ProductGroup.Equals(domain + "-package") 
                             && x.IsBasicProduct == true)
                                          .ToList();
             }
         }


         PackageModel bllPackage = new PackageModel();
         foreach (DBProduct dbProduct in DBPackageList)
         {
             bllPackage = new PackageModel();
             bllPackage.Id = dbProduct.Id;
             bllPackage.ProductId = dbProduct.ProductId;
             bllPackage.IsPromotionProduct = dbProduct.IsPromotionProduct.HasValue ? dbProduct.IsPromotionProduct.Value : false;
             bllPackage.ProductName = dbProduct.ProductName;
             bllPackage.ProductDescription = dbProduct.ProductDescription;
             bllPackage.Price = dbProduct.Price;
             bllPackage.Currency = dbProduct.Currency;
             bllPackage.CampaignId = dbProduct.CampaignId;
             bllPackage.PathToProductImage = dbProduct.PathToProductImage;
             bllPackage.PathToProductPromotionImage = dbProduct.PathToProductPromotionImage;
             bllPackage.PathToProductInfo = dbProduct.PathToProductInfo;
             bllPackage.CssClass = dbProduct.CssClass;
             BllPackageList.Add(bllPackage);
         }

         return BllPackageList;
     }
     catch (Exception ex)
     {
         Logger.Error(ex.Message);
         return BllPackageList;
     }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...