Я работаю над каким-то сетевым многопользовательским интерфейсом editor/coop, который будет делать много (как в тысячах) аякс-запросов в течение одной страницы.Ajax-интенсивная страница: повторно использовать один и тот же объект XMLHttpRequest или создавать новый каждый раз?
Что будет лучше: («лучший» с точки зрения стабильности, совместимости, избежать неприятностей)
Создать один объект XMLHttpRequest и повторно использовать, что для каждого запроса HTTP
Создать новый XMLHttpRequest объект для каждого HTTP-запроса
Управление динамическим «пулом» объектов XMLHttpRequest, создание нового при запуске HTTP-запроса и отсутствие существующего объекта и пометка ранее созданного o ▪ Таблицы, как «доступно», когда его последний запрос был успешно завершен
Я думаю, 1 это не вариант, вызвать некоторые запросов может потерпеть неудачу, я могу инициировать новые запросы в то время как предыдущая еще не закончен, и т.д.
Что касается 2, я думаю, что это утечка памяти или может привести к безумной памяти/использованию ресурсов. Или я могу как-то закрыть или удалить объект, когда его запрос будет завершен? (где/как?) Или сборщик мусора JS правильно позаботится об этом?
Никогда не пробовал 3 раньше, но он чувствует себя лучшим из обоих миров. Или такой подход ненужный, или я все еще не вижу потенциальных проблем? Точно, когда я могу предположить, что запрос будет завершен (таким образом, объект, доступный для нового запроса), заключается в том, что при получении статуса ReadyState 4 и http 200? (то есть я могу быть уверен, что после этого не последует никаких обновлений или обратных вызовов?)
Просто интересно, какой сервер вы планируете использовать и какой интернет вы подключили к этому, потому что этот сценарий, если вы правильно с тысячами запросов, чрезвычайно ресурсоем, используя – gabeio
У меня есть зверский выделенный сервер для этого. Но тысячи запросов ожидаются только в течение нескольких часов, это не похоже на запрос каждую секунду или около того. Чаще всего каждую минуту, но он может продолжать делать это в течение многих часов. –
ah well javascript будет отлично работать, если вам понадобится еще быстрее, т. Е. Запрос в секунду, я бы предложил использовать flash или java-апплет – gabeio