Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Параллельные AJAX-запросы, JsHttpRequest 
V
    Опции темы
flashaa
Дата 20.3.2008, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 796
Регистрация: 7.3.2006

Репутация: нет
Всего: 25



Привет.
Я использую JsHttpRequest (http://dklab.ru) при работе с AJAX.
При запуске нескольких запросов я замечаю, что запросы выполняются по очереди. Т.е. в цикле отправляю несколько запросов, устанавливаю callback-функцию, каждая из callback-функций добавляет строку в таблицу. В результате я вижу,  что не смотря на то, что запросы "висят" уже отправленными в FF, ответ от сервера для них подгружается друг за другом, а не параллельно, что естественно, очень мешает, т.к. AJAX мне нужен для параллельности. 

Это проблема JsHttpRequest или просто JS ? Смогу ли я её исправить, покопавшись в коде библиотеки ?
Или может быть это проблема сервера? (запросы от одного и того же хоста не обрабатываются параллельно?)

Вообщем хотелось бы сделать, чтобы запросы AJAX стреляли параллельно, а не друг за другом.

Это сообщение отредактировал(а) flashaa - 20.3.2008, 13:45
PM MAIL   Вверх
vasac
Дата 20.3.2008, 14:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1060
Регистрация: 4.5.2006

Репутация: 13
Всего: 36



Что вы подразумеваете в данном случае под параллельностью? Запросы оправлены один за другим, не дожидаясь ответов от предыдущего, что еще вам нужно?
PM WWW   Вверх
flashaa
Дата 20.3.2008, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 796
Регистрация: 7.3.2006

Репутация: нет
Всего: 25



Цитата(flashaa @  20.3.2008,  13:44 Найти цитируемый пост)
ответ от сервера для них подгружается друг за другом, а не параллельно, что естественно, очень мешает, т.к. AJAX мне нужен для параллельности. 

Мне нужно чтобы каждый запрос обрабатывался полностью параллельно. Ну отправляются они будем считать параллельно - с мизерной разницей во времени, а ответ приходит последовательно. Это судя по фаербагу, на самом деле, точно я не знаю, где именно вкрадывается последовательность. Может XmlHttpRequest все запросы вешает в очередь. А фаербаг повешенные в очередь запросы отображает как отправленные.
Дело в том, что отправляемые запросы имеют разное время выполнения. Чтобы быстрые запросы раньше выполнялись и соответствующие части сайта быстре обновлялись. Для их распараллеливания я и сделал AJAX. А поскольку вижу, что результат работы выглядит последовательно, то это, соотвественно, не радует.
Вот мне и надо узнать, может ли JS вообще это обеспечить? Если да, буду думать со стороны сервера.

Это сообщение отредактировал(а) flashaa - 20.3.2008, 14:33
PM MAIL   Вверх
IDVsbruck
Дата 20.3.2008, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 778
Регистрация: 12.11.2006

Репутация: 8
Всего: 22



Если у тебя один объект типа XMLHttpRequest, то естественно, что при каждом AJAX-запросе предыдущий будет "забиваться", то есть выполнять их можно только последовательно.
Для параллельной обработки AJAX-запросов обычно используется техника javascript'а - Closures. Копай в эту сторону. Там ничего сложного, просто каждый созданный объект XMLHttpRequest создается при формировании запроса и исчезает при завершении, передав управление callback-функции.
Очень важное замечание: браузеры очень по-разному относятся к количеству AJAX-запросов. Так, IE позволяет их только 2! А возиться с пулами запросов зачастую слишком дорого и овчинка не стоит выделки.
PM MAIL   Вверх
flashaa
Дата 20.3.2008, 15:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 796
Регистрация: 7.3.2006

Репутация: нет
Всего: 25



Цитата(IDVsbruck @  20.3.2008,  14:51 Найти цитируемый пост)
Если у тебя один объект типа XMLHttpRequest, то естественно, что при каждом AJAX-запросе предыдущий будет "забиваться", то есть выполнять их можно только последовательно.

Не один объект. Там new XmlHttpRequest на каждый запрос.
Цитата(IDVsbruck @  20.3.2008,  14:51 Найти цитируемый пост)
Там ничего сложного, просто каждый созданный объект XMLHttpRequest создается при формировании запроса и исчезает при завершении, передав управление callback-функции.

Так и есть.
Цитата(IDVsbruck @  20.3.2008,  14:51 Найти цитируемый пост)
Так, IE позволяет их только 2!

Нифига ж себе, посмотрю. Спасибо за инфу.

Добавлено через 11 минут
Цитата(IDVsbruck @  20.3.2008,  14:51 Найти цитируемый пост)
чень важное замечание: браузеры очень по-разному относятся к количеству AJAX-запросов. Так, IE позволяет их только 2!

Может быть странно, но тестил на ИЕ6 и реакция браузера ничем не отличалась от ФФ, Оперы. Выбрасывается 21 запрос.
PM MAIL   Вверх
IDVsbruck
Дата 20.3.2008, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 778
Регистрация: 12.11.2006

Репутация: 8
Всего: 22



Покопался в своих записях и нашел первоисточник моей информации, которую я ранее использовал: AJAX FAQ
Там смотри рубрику "Как обрабатывать параллельные AJAX-запросы?"
Надеюсь, поможет.

Добавлено через 2 минуты и 4 секунды
Сейчас увидел внизу этой странички ссылку на подобную тему, рассматриваемую ранее ... Смотрю, там были серьезные обсуждения и решение вроде найдено. Советую заглянуть.
А решение, которое я указал, оказывается, чисто Sun'овское.
PM MAIL   Вверх
flashaa
Дата 22.3.2008, 18:23 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 796
Регистрация: 7.3.2006

Репутация: нет
Всего: 25



Cпасибо, с AJAX-ом все было хорошо. Проблема была с технической стороны - все запросы шли во время одного соеденения с сервером и потому обрабатывались последовательно. Заголовок Connection: close в запросах AJAX указал на то, что после запроса соединение надо закрывать и в результате запросы стали обрабатываться параллельно.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0772 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.