неуклонно замедляя вызовы ajax к сервису WCF из javascript - PullRequest
4 голосов
/ 18 августа 2010

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

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

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

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

Я использую .NET 3.5sp1 & C #

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

edit 2: Я исправил проблему с памятью, упомянутую в комментариях с Джоном Ханной, и время моего запроса все еще увеличивается.

Ответы [ 2 ]

0 голосов
/ 01 ноября 2010

Природа WCF медленнее любых других методов.попробуйте .ashx

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

ex http://localhost/test.ashx?get=test

в ashx, возвращаемое значение «пройдено»;

я обычно использую его сjQuery.load ('test.ashx? get = test', function (...) {}) с этим методом, мне больше не нужно беспокоиться о $ .ajax дерьме

0 голосов
/ 18 августа 2010

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

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

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

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