длительная задержка между серверным JSON и jqGrid loadComplete на сайте asp.net mvc - PullRequest
0 голосов
/ 16 июня 2010

У меня есть сайт asp.net mvc, где я загружаю jqgrid с данными json

Вот код действия моего контроллера:

    public ActionResult GridData(GridData args)
    {
        IEnumerable<Application> applications = EntityModel.GetAll().ToList();
        applications = FilterEntities(applications);
        if (args.sidx.IsNullOrEmpty() || args.sidx == "Id")
        {
            args.sidx = "Name";
            args.sord = "asc";
        }
        applications = applications.GridSort(args.sidx, args.sord);
        var paginatedData = applications.GridPaginate(args.page ?? 1, args.rows ?? 10,
                                                      i => new
                                                      {
                                                          i.Id,
                                                          Name = "<div class='showDescription' Id= '" + i.MyId + "'>" + i.Name + "</div>",
                                                          MyId = string.Format("<a                                                               i.LastUpdated,
                                                          i.LastUpdatedColumn
                                                      });

        return Json(paginatedData);
    }

и вот мой код JavaScript:

function doInitCrudGrid(controller, names, model, editable, querystring) {
jQuery("#grid").jqGrid({
    mtype: 'POST',
    url: "/" + controller + "/GridData?" + querystring,
    datatype: "json",
    colNames: names,
    colModel: model,
    imgpath: "/Scripts/jqGrid/themes/steel/images",
    rowNum: 20,
    rowList: [10, 20, 50, 999],
    altRows: true,
    altclass: "altRow",
    jsonReader: {
        root: "Rows",
        page: "Page",
        total: "Total",
        records: "Records",
        repeatitems: false,
        id: "Id"
    },
    pager: "#pager",
    height: "auto",
    sortname: "Id",
    viewrecords: true,
    sortorder: "desc",
    loadComplete: function() {

        alert("Load Complete");
    },
    ondblClickRow: function(rowid) { }
});

У меня есть точка останова на

return Json(paginatedData);

линия, и она очень быстро удаляется, но после этого требуется около 10 секунд для:

 alert("Load Complete");

и для отображения на веб-странице.

Есть ли какой-либо способ отладки этого или способа увидеть, почему будет такая большая задержка между завершением json на стороне сервера и созданием истории loadcomplete при обратном вызове JavaScript?

Ответы [ 2 ]

1 голос
/ 16 июня 2010

Чтобы быть уверенным, где у вас проблемы, я бы порекомендовал вам измерить время с обеих сторон. Например, в вашем JavaScript сделайте следующее:

var startTime = new Date();
// do something
var totalTime = new Date() - startTime;

и внутри вашего действия контроллера

using System;

public ActionResult GridData(GridData args) {
    DateTime startTime = DateTime.Now;
    // do something
    TimeSpan totalTime = DateTime.Now - startTime;
    // save or log totalTime
    System.DateTime date4 = date3.Subtract(diff1);
    return Json(paginatedData);
}

После этого вы будете точно знать, с какой стороны у вас есть основные проблемы с производительностью.

0 голосов
/ 16 июня 2010

Сколько данных вы возвращаете?Это может занять много времени для сериализации и десериализации.Рассматривали ли вы возврат PartialView вместо и замену содержимого div с возвращенным HTML?

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