مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

morteza373

عضویت از 1394/10/30

کم بودن سرعت لود صفحه و ajax

  • شنبه 19 اسفند 1396
  • 12:51
تشکر میکنم

سلام خسته نباشید

من تو کنترلر 3 تا جدول رو با دستورات لینک join کردم و ویک سری شرط ها رواعمال کردم :


        [HttpPost]
        [AjaxOnly]
        public ActionResult Index(int start, int end, int pageid = 1)
        {
            try
            {
                if (start < end)
                {
                    UserRepository UR = new UserRepository();
                    var user = UR.Where(p => p.UserName == User.Identity.Name).Single();
                    int senfID = (int)user.AsnafId;
                    string province = user.Province;

                    IndexCustomerViewModel Model = new IndexCustomerViewModel();
                    Distribution_SystemEntities db = new Distribution_SystemEntities();

                    IEnumerable<H_Index_ArticleViewModel> mod = from UA in db.User_Article
                                  join Art in db.Articles on UA.ArticleId equals Art.id
                                  join Us in db.Users on UA.UserId equals Us.id
                                  where (Us.Roles == "Supplier" && Us.Province == province && Us.AsnafId == senfID && UA.ArticleCount > 0 && UA.Price != null && UA.Price >= start && UA.Price <= end && Art.Showing == true && Art.Secret == false )
                                  select new H_Index_ArticleViewModel
                                  {
                                      article = Art,
                                      user_article = UA,
                                      UserRoles = Us.Roles
                                  };
                        mod = (from element in mod
                               group element by element.article
                                   into groups
                                   select groups.OrderBy(p => p.user_article.Price).FirstOrDefault()).OrderBy(p => p.user_article.Price);

                        var skip = (pageid - 1) * 24;
                        ViewBag.pageid = pageid;
                        var count = mod.Count();
                        ViewBag.ArticleCount = count;
                        ViewBag.pageCount = ((count % 24) == 0) ? (count / 24) : (count / 24) + 1;
                        if (count > 0)
                        {
                            if (ViewBag.pageCount >= pageid)
                            {
                                Model.artlist = mod.Skip(skip).Take(24);
                                
                                return Json(new JsonData
                                {

                                    Html = this.RenderPartialToString("_IndexPartial", Model.artlist),
                                    Success = true
                                });
                            }
                            else
                            {
                                return Json(new JsonData
                                {

                                    Script = MessageBox.Show("خطا! لطفا دوباره سعی کنید.", MessageType.Error).Script,
                                    Success = false
                                });
                            }
                        }
                        else
                        {
                            return Json(new JsonData
                            {
                                Html = "",
                                Script = MessageBox.Show("هیچ موردی یافت نشد.", MessageType.Error).Script,
                                Success = true
                            });
                        }
                
                }
                else
                {
                    return Json(new JsonData
                    {

                        Script = MessageBox.Show("خطا! لطفا دوباره سعی کنید.", MessageType.Error).Script,
                        Success = false
                    });
                }
            }
            catch
            {
                return Json(new JsonData
                {

                    Script = MessageBox.Show("خطا! لطفا دوباره سعی کنید.", MessageType.Error).Script,
                    Success = false
                });
            }

        }

این کد مربوط به اکشن موردنظر هست که به صورت ajax کار میکنه و شماره صفحه (pageid) و محدوده قیمت ( start , end ) رو میگیره و بر اساس اون رکورد هارو فیلتر میکنه و نمایش میده

ولی کند عمل میکنه ، با اینکه تعداد رکورد های دیتابیس هم زیاد نیس (حداکثر 50 تا رکورد) ،

از ویژوال 2013 و .net 4.5 و sql server 2008 استفاده میکنم ،فک کنم کوئری که زدم زیاد جالب نیس ، آیا کوئری که زدم مشکل داره؟

لطفا راهنمایی کنید، چیکار کنم که سرعت لود افزایش پیدا کنه ؟

پاسخ های این پرسش

تعداد پاسخ ها : 3 پاسخ
کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • شنبه 19 اسفند 1396
  • 13:15

سرعت را باید وقتی سایت آنلاین شد بررسی کنید 

اگر سایت آنلاین هست لینکش رو بدید بررسی کنیم 

کاربر سایت

morteza373

عضویت از 1394/10/30

  • شنبه 19 اسفند 1396
  • 13:29
سلام ، نه سایت رو لوکاله ، ولی این صفحه نسبت به صفحات دیگه ی سایتم ، وقتی ایجکس اطلاعات رو لود میکنه ، سرعت کمتری داره، یعنی مدت زمان بیشتری طول میکشه ، تو کد ها مشکلی وجود نداره؟ آیا کد هایی که نوشتم قابل قبول هستن از لحاظ بهینه بودن و... ؟
کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • شنبه 19 اسفند 1396
  • 13:31

خودتون کدهاتون رو باید بررسی کنید

ما نمیتونیم روی این کدها نظر بدیم

اگر میبیندی خیلی کند هست باید از یه برنامه نویس با تجربه بخواهید کدهاتون رو Rafactor کنه

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)