Ajax Jquery Частичное представление загружается медленно - PullRequest
0 голосов
/ 20 апреля 2020

Проблема: моя страница просмотра загружается более 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 МБ.

Почему это занимает столько времени? Можно ли ускорить время загрузки?

ОБНОВЛЕНИЕ: Экран производительности enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...