Слишком много одновременных AJAX-соединений плохо? - PullRequest
9 голосов
/ 21 ноября 2010

Я пишу довольно большое приложение на основе JavaScript, и иногда бывают случаи, когда одновременно выполняется даже восемь (8) запросов AJAX. Это проблема в IE6, потому что он убивает остальные запросы, я знаю это, но это приложение предназначено для современных браузеров, поэтому IE6 не является проблемой.

Тем не менее, у меня есть чувство (я не сделал никакого фактического профилирования), что объединение запросов может привести к лучшей производительности. Скажем, максимум 4 запроса одновременно.

Итак, мой вопрос заключается в том, есть ли какая-либо польза от объединения запросов AJAX или можно ли выполнять несколько запросов одновременно по сравнению с наличием пула, в котором они обрабатываются один за другим?

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

Ответы [ 3 ]

15 голосов
/ 21 ноября 2010

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

Browser           HTTP/1.1    HTTP/1.0
-------           --------    --------
IE 6,7            2           4
IE 8              6           6
Firefox 2         2           8
Firefox 3         6           6
Safari 3,4        4           4
Chrome 1,2        6           ?
Chrome 3          4           4
Opera 9.63        4           4
Opera 10.00alpha  4           4

Кроме того, две другие важные цитаты из этой статьи:

Возможно перенастроить ваш браузер на использование других ограничений.

и

Обратите внимание, что IE8 автоматически сбрасывает до 2 подключений на сервер для пользователей, подключающихся по телефонной линии.

... и, насколько вы знаете, другие современные браузеры делают или могут начать делать это со своим следующим «точечным» выпуском.

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

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

9 голосов
/ 21 ноября 2010

too many всегда плохо.

Подробнее об оптимизации AJAX в этой статье .

1 голос
/ 21 декабря 2015

В зависимости от браузеров, перечисленных в ответах выше, да. В некоторых случаях, если они не поставлены в очередь для отправки запроса в хронологическом порядке, вы можете столкнуться с определенными сценариями, в которых некоторая возвращаемая информация может смешиваться и отображаться в неправильном элементе при попытке загрузить информацию о возвращении запроса POST ajax.

...