улучшить производительность в запросе ajax - PullRequest
2 голосов
/ 22 декабря 2009

Я делаю ajax-запрос, используя jQuery и asp.net следующим образом:

$.ajaxSetup({
    type: "POST",
    contentType: "application/json; charset=utf-8",
    dataType: "json"
});

$.ajax({
            url: "/WebServices/CompareDates",
            data: "{allClients: '" + allClients + "'}",
            success: function(msg) {
                  SuccessCompareDate(msg.d);
            }
      });

Этот ajax-запрос выполняется каждую 1 секунду с использованием javascript setInterval. Я получаю ответ в среднем 700 мс. Но мне нужен этот ответ максимум через 150 мс.

Я уже использую WebMethod вместо веб-сервиса, но тоже не очень хорошо работает.

На сервере все ок. В веб-службе c # тоже, и он просто возвращает логическое значение. Мне нужна производительность. Кто-то может мне помочь? Спасибо ..

Ответы [ 2 ]

1 голос
/ 22 декабря 2009

Это тот случай, когда ваша проблема может быть чем-то неуправляемым, например, задержка в сети. Нет ничего плохого в вашем синтаксисе или методологии; Есть некоторые факторы, которые мы не можем видеть, хотя. Вот несколько путей отладки. Любой из них может принести плоды, в зависимости от того, что именно вы обрабатываете и какие данные вы передаете вверх и вниз.

  • Вероятно, это не ваш код на стороне сервера. Но просто чтобы убедиться, что ваш веб-сервис не выполняет никакой обработки, кроме как просто возвращает небольшое литеральное значение и проверяет, есть ли разница во времени.
  • Это, вероятно, не твой JQuery AJAX. Но просто чтобы быть уверенным, попробуйте это как прямой запрос, и Пекка предложил.
  • Теперь я не знаю размер передаваемых вами данных. Если он любого размера, попробуйте передать только крошечное значение после того, как вы попробовали первый вариант выше.
  • Я не уверен, как вы делаете выбор времени. Убедитесь, что вы получаете разницу во времени в начале метода обратного вызова, за до любого рендеринга. Иногда возникают проблемы с рендерингом, которые действительно могут замедлить процесс. Разные способы сделать одно и то же могут занять разное количество времени. Например, прямой javascript .innerHtml обычно очень быстрый, но другие способы обновления разметки могут быть медленными и могут варьироваться в зависимости от браузера.
  • Точно так же, много ли обрабатывается, чтобы собрать переменную allClients? Если это так, сравните время, начиная с после такой обработки.
0 голосов
/ 22 декабря 2009

Надеюсь, это в вашей коробке разработки. Вы, вероятно, должны изучить свой код на стороне сервера и, возможно, даже базу данных. И, очевидно, чем меньше размер запроса / ответа (вы можете использовать такие инструменты, как Fiddler / Charles, чтобы найти размер), тем быстрее отклик. Похоже, вы возвращаете логическое значение для вашего ответа, как насчет вашего запроса, насколько он велик? И можете ли вы на самом деле вставить таймер в код на стороне сервера, чтобы увидеть, сколько времени требуется для выполнения?

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