2010-08-17 3 views
4

У меня есть служба WCF, которую я звоню на использование jQuery 1.4.2 (опрос его фактически каждую секунду или около того). Со временем аякс вызывает медленный вызов. Первоначальный запрос к методу составляет около 30 мс, но примерно через полчаса я могу смотреть с помощью Opera's DragonFly (и проверено с помощью инструментов хром), время моего запроса медленно увеличивается. Примерно через полчаса я перехожу от времени запроса ~ 30 мс к времени запроса ~ 300 мс.неуклонно замедление вызовов ajax для службы WCF из javascript

Сначала я думал, что это была служба я писал, так что я изменил метод просто возвращает значение, никаких расчетов или что-нибудь:

public int DoSomething(int id) 
    { 
     return 0; 
    } 

Я был очень удивлен, увидев, что поведение такое же : Постоянное увеличение времени запроса. Я знаю, что это довольно расплывчато, но любые указатели на неприятности снимают что-то подобное? если это не мой метод, кто вероятный кандидат?

Im использованием .NET 3.5sp1 & C#

редактировать: Чтобы уточнить, я использую $ .ajax метод JQuery, чтобы сделать вызов, и его фактическое время запроса, замедляются, реакция всегда в значительной степени ~ 0ms.

Редактировать 2: Я исправил проблему с памятью, упомянутую в комментариях с Jon Hanna &, но мой запрос времени растет.

+0

Так звучит так, будто вы исключили служебную сторону вещей. Как выглядит ваш код jQuery? Вы берете возвращаемое значение и добавляете элементы DOM на свою страницу, добавляете новые анимации, устанавливаете таймеры и т. Д.? Похоже, что клиентский код может быть проблемой. –

+0

Его фактический запрос ajax, который замедляется, а не ответ. –

+0

Можете ли вы разместить свой jQuery ajax-код и как вы обрабатываете ответ? Если у вас есть большое количество селекторов в вашем аякс-вызове, и вы управляете DOM с успехом, это может замедлить выполнение запроса (и объяснить, почему ответ всегда равен 0 мс). –

ответ

0

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

Вам понадобится новый браузер (без точечного измерения после того, как ваши видеоролики на YouTube с популярными хитами вашего любимого музыканта будут открываться на разных вкладках), которым разрешено проходить через любые начальные захваты памяти, а затем запускает ваш скрипт ,

Если это проблема, посмотрите на объединение объектов javascript, особенно самого XHR, чтобы убедиться, что события не привязаны к обработчикам, а затем игнорируются и что вы не постоянно добавляете в DOM хост-документ.

+0

Память браузера растет, но я не знаю, насколько она значительна. ~ 3,5 МБ примерно через ~ 35-40 мин. jQuery - это тот, который контролирует фактический запрос ajax, используя его метод $ .ajax. –

0

Это природа WCF, что она медленнее, чем любые другие методы. have u try .ashx

он похож на обычную страницу aspx, но ashx не имеет html-страницы. просто чисто код позади. идеально подходит для выполнения url с строкой запроса и возвращает его в виде строки или json.

экс http://localhost/test.ashx?get=test

в ASHx возвращение 'прошло';

я обычно использую его с jQuery.load ('test.ashx? Получить = тест', функция (...) {}) с помощью этого метода, я не придется беспокоиться о $ .ajax дерьмо в малейшей