2009-12-22 5 views
2

i'm делать в Ajax запрос с помощью JQuery и ASP.NET на этом пути:улучшить производительность в Ajax запроса

запроса
$.ajaxSetup({ 
    type: "POST", 
    contentType: "application/json; charset=utf-8", 
    dataType: "json" 
}); 

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

Это Аякс является сделать каждый 1 секунду, Использование JavaScript setInterval. Я получаю ответ в среднем 700 мс. Но мне нужен этот ответ максимум в 150 мс.

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

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

+1

Как выполняется прямой запрос (без AJAX)? Аналогичные значения? Это 100% проблема AJAX? –

+0

@Pekka: Интересно, я не думал с этой точки зрения. Любопытно, почему вы хотите сравнить обычный запрос и запрос ajax? – ram

ответ

1

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

  • Возможно, это не ваш серверный код. Но просто убедитесь, что ваш веб-сервис не обрабатывает, за исключением того, что просто возвращает небольшое буквальное значение и посмотрите, есть ли разница во времени.
  • Возможно, это не ваш jquery ajax. Но, чтобы быть уверенным, попробуйте это как прямой запрос, и предложил Пекка.
  • Я не сейчас размером с данные, которые вы передаете. Если он имеет какой-либо размер, подумайте о том, чтобы попробовать пройти только небольшое значение после того, как вы попробовали первый вариант выше.
  • Я не уверен, как вы делаете время. Убедитесь, что вы получили разницу во времени прямо в начале метода обратного вызова, до любой рендеринг. Иногда возникают проблемы с рендерингом, которые могут действительно замедлить работу. Различные способы сделать то же самое могут занимать разные промежутки времени. Например, прямой javascript .innerHtml, как правило, очень быстрый, но другие способы обновления разметки могут быть медленными, и это может зависеть от браузера.
  • Аналогично, существует ли большая обработка, связанная с объединением переменной allClients? Если да, сравните свои тайминги начиная с после такой обработки.
+0

благодарит Патрика .. Я проверю его – 2009-12-23 12:47:08

0

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

+0

спасибо Рам .. Я попробую – 2009-12-23 12:46:17

Смежные вопросы