XMLHttpRequest и параллельные запросы

uchenik

Новичок
XMLHttpRequest и параллельные запросы

Имеется некий сторонний сайт www.site.com, который предоставляет доступ к своему API в виде веб-сервиса.

Я пишу собственный интерфейс к сайту используя JavaScript (для управления интерфейсом) и PHP (для работы с веб-сервисом). Обмен данными между JavaScript-ом и PHP осуществляется через XMLHttpRequest. Эта связка будет работать локально на моей машине.

Проблема возникла неожиданно. В некоторые методы веб-сервиса заложена задержка ответа в 5, 10 секунд.
Посылаю через XMLHttpRequest 2 паралельных запроса к таким методам, все последующие запросы зависают на эти 5-10 секунд, ожидая выполнения предыдущих. Такое зависание в очереди является критичным для приложения.

Каким образом обойти ограничение в 2 паралельных запроса?
 

phprus

Moderator
Команда форума
uchenik
Если мне не изменяет память, то браузеры ограничивают количество параллельных запросов, чтобы не перегружать сервер и я не видел ни одного способа, как это можно обойти.

Хотя можно попробовать разнести сайт на разные домены, правда я не помню позволяет ли XMLHttpRequest загружать данные с других доменов.

Такое зависание в очереди является критичным для приложения.
А вот это не правильно, так как у пользователя может быть медленный канал связи и тогда такой задержки будет вообще не избежать. ИМХО лучше попробовать изменить приложение, чтобы такая задержка ни на что не влияла.
 

uchenik

Новичок
Программу я пишу для себя, ибо не устраивает стандартный интерфейс сайта (недостаточно функционален).

Поэтому другие пользователи не интересуют так же как и кроссброузернось :)

Зависание некоторых запросов из-за сети допускается. Но зависание постоянное из-за ограничения в 2 паралельных запроса неприемлемо.

Часть методов веб-сервиса возращает данные, которые нужно анализировать (обычное количество запросов около 40 в минуту и более). На основе расчетов полученных данных время от времени формируются запросы к другим методам (которые с задержкой в 5-10 сек.)

Вообщем в 2-х предложениях не описать суть вопроса, ибо програмка немаленькая получется. Только Reference Guide к веб-сервису занимает 159 страниц.
 

dark-demon

d(^-^)b
если на обработку одного зарпоса требуется 5-10 сек, то имеет смысл разбить этот запрос на два с задержкой. пример - поиск на этом форуме.
 

lmbTony

Новичок
Автор оригинала: uchenik
Программу я пишу для себя, ибо не устраивает стандартный интерфейс сайта (недостаточно функционален).

Поэтому другие пользователи не интересуют так же как и кроссброузернось :)
Пользуйтесь Firefox'ом. В нем в about:config (вводить в строку запроса: http://www.mozilla.org/support/firefox/edit#aboutconfig ) либо непосредственным редактированием конфига поменяйте опцию network.http.pipelining на true. Так же можете указать максимальное количество параллельных запросов в опции network.http.pipelining.maxrequests. ( http://www.mozilla.org/support/firefox/tips#oth_pipelining )

edit: исправил ссылку
 

uchenik

Новичок
lmbTony, огромное спасибо!

Для моего случая - это идеальное решение. Проблема, правда, решилась редактированием другой опции network.http.max-persistent-connections-per-server, которая и устанавливает ограничение в 2 запроса.

-~{}~ 31.07.07 16:49:

установил за пару минут методом тыка
 
Сверху