Ajax-интенсивная страница: повторно использовать один и тот же объект XMLHttpRequest или каждый раз создавать новый?

Я работаю над своего рода многопользовательским онлайн-редактором / интерфейсом кооператива, который будет выполнять много (как и тысячи) запросов AJAX в течение жизни одной страницы.

Что было бы лучше всего: («лучше» с точки зрения стабильности, совместимости, избежания проблем)

Create one XMLHttpRequest object and reuse that for every HTTP request

Create a new XMLHttpRequest object for every HTTP request

Manage a dynamic 'pool' of XMLHttpRequest objects, creating a new one when starting a HTTP request and no existing object is available, and tagging a previously created object as 'available' when its last request was completed successfully

Я думаю, что 1 не вариант, потому что некоторые запросы могут быть неудачными, я могу инициировать новые запросы, пока предыдущий еще не завершен и т. Д.

Что касается 2, я предполагаю, что это утечка памяти или может привести к безумному использованию памяти / ресурсов. Или я могу как-то закрыть или удалить объект, когда его запрос завершен? (где / как?) Или сборщик мусора JS сам позаботится об этом?

Никогда не пробовал 3 раньше, но это похоже на лучшее из обоих миров. Или такой подход не нужен, или мне все еще не хватает потенциальных проблем? Когда именно я могу предположить, что запрос завершен (то есть объект доступен для нового запроса), это происходит при получении состояний readyState 4 и http 200? (т.е. могу ли я быть уверен, что после этого больше не будет обновлений или обратных вызовов?)

Ответы на вопрос(1)

Ваш ответ на вопрос