【问题标题】:Page loading is slow in MVC ApplicationMVC 应用程序中的页面加载速度很慢
【发布时间】:2016-06-24 12:01:47
【问题描述】:

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

两个服务器上的数据库是不同的 nut 代码和两个服务器上的记录数相同

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>   
     }
 }

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

谢谢, 维沙尔

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    【讨论】:

    • QuestionId 为聚集索引,SubCategoryId 为非聚集索引。
    • 根据我们的分析,渲染数据需要时间。在视图中。有什么办法可以加快进度
    【解决方案2】:

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

    不要直接使用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()
    

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

    【讨论】:

    • 应用了更改但不影响执行时间。
    • 根据我们的分析,渲染数据需要时间。在视图中。有什么办法可以加快进度
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-17
    • 2015-05-15
    • 1970-01-01
    • 1970-01-01
    • 2016-10-17
    • 1970-01-01
    相关资源
    最近更新 更多