Проблема: моя страница просмотра загружается более 5 минут, и я проверил запрос к базе данных, который занимает всего 10-20 секунд.
Позвольте мне объяснить. У меня есть частичная страница. Предположим, что у этой страницы есть частичная страница: 1 У меня есть кнопка типа «Загрузить данные истории учащегося». Когда пользователь нажимает кнопку, открывается другое частичное представление, например код всплывающего окна, приведенный ниже.
Код кнопки щелчка и всплывающее окно режима:
<button type="button" id="btnStudProj" class="btn btn-link"
data-toggle="modal" data- target="#myModalStudProj">Load Students History Data</button>
<div id="myModalStudProj" class="modal fade" role="dialog" style="overflow-y:scroll">
<div id="partialStudProj">
</div>
</div>
Использование Ajax в jQuery, я загрузка частичного окна:
$('#btnCusProj').click(function (e) {
e.preventDefault();
var element = this;
$.ajax({
url: applicationRoot + '/Search/StudentResponseData',
type: "POST",
data: JSON.stringify({ changeId: $("#changeId").val() }),
dataType: "json",
contentType: false,
contentType: "application/json; charset=utf-8",
success: function (Data) {
if (Data.status) {
$('#partialStudProj').html('');
$('#partialStudProj').html(Data.Url);
} else {
bootbox.alert(Data.responseText);
}
},
error: function (e) {
console.log(e);
bootbox.alert("An error has occurred!");
}
});
});
Это мой контроллер:
public JsonResult StudentResponseData(string changeId)
{
try
{
_model = new SearchViewModel();
_model.StudHistData = _repository.StudHistData(changeId);
return new JsonResult {
Data = new { status = true,
Url = RenderViewToString("_StudProjTask", _model) },
JsonRequestBehavior = JsonRequestBehavior.AllowGet,
MaxJsonLength = int.MaxValue
};
}
catch (Exception ex)
{
return new JsonResult { Data = new { status = false, responseText = ex.Message },
JsonRequestBehavior = JsonRequestBehavior.AllowGet };
}
}
public string RenderViewToString(string viewName, object model)
{
ViewData.Model = model;
using (var sw = new StringWriter())
{
var viewResult = ViewEngines.Engines.FindPartialView(ControllerContext, viewName);
var viewContext = new ViewContext(ControllerContext, viewResult.View, ViewData, TempData, sw);
viewResult.View.Render(viewContext, sw);
viewResult.ViewEngine.ReleaseView(ControllerContext, viewResult.View);
return sw.GetStringBuilder().ToString();
}
}
Это частичное представление:
<div class="modal-open modal-body">
<div class="modal-content">
<div class="modal-header bg-primary">
<button type="button" class="close" data-dismiss="modal">X</button>
<h4 class="modal-title">Student History Data</h4>
</div>
<div class="modal-body">
<div class="tab-content">
<div class="tab-pane active" id="oem">
<div class="panel-body modelpopup-scroll">
<table class="table table-hover table-responsive table-bordered">
<thead>
<tr>
<th>DATA1</th>
<th>DATA2</th>
<th>DATA3</th>
<th>DATA4</th>
<th>DATA5</th>
<th>DATA6</th>
<th>DATA7</th>
<th>DATA8</th>
<th>DATA9</th>
<th>DATA10</th>
</tr>
</thead>
<tbody>
@foreach (var getRowData in Model.StudHistData )
{
<tr>
<td class="text-center"> Data1</td>
<td style="width:150px">@getRowData.ProjectName</td>
<td>@getRowData.DepartmentName</td>
<td>DATA4</td>
<td>
@Html.DropDownListFor(model => getRowData.UserId, new
MultiSelectList(Model.UsersList.Where(x => x.UserId ==
getRowData.UserId.FirstOrDefault().ToString()).GroupBy(u =>
u.UserId).Select(group => group.First()), "UserId",
"UserName"), new { @style = "width:150px", @class = "form-
control" })
</td>
<td>
@Html.ListBoxFor(model => getRowData.PossibleUser, new
MultiSelectList(Model.UsersList.GroupBy(u =>
u.UserId).Select(group => group.First()), "UserId",
"UserName", getRowData.PossibleUser))
</td>
<td>DATA7</td>
<td>DATA8</td>
<td>DATA9</td>
<td>DATA10</td>
</tr>
}
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
Вопрос
Есть 300 строк времени загрузки данных: 4 минуты в Google chrome и 10 минут в IE. Когда я установил флажок для загрузки данных содержимого на chrome вкладка «Проверка элемента» сети, как 3 МБ.
Почему это занимает столько времени? Можно ли ускорить время загрузки?
ОБНОВЛЕНИЕ: Экран производительности