MVC应用程序中的页面加载速度很慢

时间:2016-06-24 12:01:47

标签: asp.net-mvc performance entity-framework model-view-controller

我已经使用rojar view在MVC中开发了应用程序。工作正常,但是测试服务器在4秒内运行页面,在生产服务器上需要30-35秒。

服务器上的数据库是不同的坚果代码,服务器上的记录数相同

foreach (var subcategpory in Model.category.RFP_SubCategories)
 {
     if (subcategpory.RFP_Questions.Any(q => q.SubCategoryId == subcategpory.SubCategoryId))
     {
 <div class="vendor-block">
     <div class="vendor-title border-bottom">
         <h6>@subcategpory.SubCategory</h6>
         <p>Selected:<span class="selectedQuestion" id="selectedQuestion_@subcategpory.SubCategoryId">0</span></p>
     </div>
     <ul class="vendor-list">
         @if (Model.category.RFP_Questions != null)
         {
             foreach (var que in subcategpory.RFP_Questions.Where(q => q.SubCategoryId == subcategpory.SubCategoryId))
             {
                 bool IsChecked = Model.category.RFP_SelectedQuestions.Any(sq => sq.QuestionId == que.QuestionId);
            }
         }
     </ul>
 </div>   
     }
 }

您能否提出任何解决问题和实际原因的方法。

谢谢, 维沙尔

2 个答案:

答案 0 :(得分:0)

我会检查两个数据库上是否有相同的索引,因为可能在测试服务器上创建了一个在实时服务器上缺少的索引。

另一个明显的问题是,由于访问服务器的其他内容,实时服务器可能会有更多的资源争用。这种情况也可以通过使用正确的索引来解决,从而使查询能够快速完成。

我会检查SubCategoryIdQuestionId字段是否有适当的索引。

您还可以查看统计信息,并确保它们在实时服务器上是最新的。这个:https://msdn.microsoft.com/en-us/library/ms173804.aspx可能值得一看。

答案 1 :(得分:0)

您可以避免延迟执行。试试这个:

不要直接使用Model.category.RFP_SubCategories。相反:

var lst=Model.category.RFP_SubCategories.ToList()

并循环使用lst

您也可以更改

         foreach (var que in subcategpory.RFP_Questions.Where(q => q.SubCategoryId == subcategpory.SubCategoryId))
         {
             bool IsChecked = Model.category.RFP_SelectedQuestions.Any(sq => sq.QuestionId == que.QuestionId);
         }

var qstnsList= subcategpory.RFP_Questions.Where(q => q.SubCategoryId == subcategpory.SubCategoryId).ToList()

如果数据存在,则在qstnsList循环中使用foreach。 试试这个并告诉我它是否节省了时间。