Ajax密集型页面:每次重用相同的XMLHttpRequest对象或创建新对象?

She*_*man 6 javascript ajax xmlhttprequest instance reusability

我正在研究某种在线多用户编辑器/ coop接口,它将在一个页面生命周期内做很多(如数千)ajax请求.

什么是最好的:(在稳定性,兼容性,避免麻烦方面'最好')

  1. 创建一个XMLHttpRequest对象,并为每个HTTP请求重用该对象

  2. 为每个HTTP请求创建一个新的XMLHttpRequest对象

  3. 管理XMLHttpRequest对象的动态"池",在启动HTTP请求时创建一个新池,并且没有现有对象可用,并在上一个请求成功完成时将先前创建的对象标记为"可用"

我认为1不是一个选项,因为某些请求可能会失败,我可能正在发起新请求而前一个请求尚未完成,等等.

对于2,我猜这是内存泄漏,或者可能导致内存/资源使用疯狂.或者我可以在请求完成时以某种方式关闭或删除对象?(在哪里/如何?)或者JS垃圾收集器是否正确地处理了这个问题?

从未尝试过3次,但感觉就像两个世界中最好的一样.或者是一种不必要的方法,还是我仍然缺少潜在的问题?确切地说,当我接收readyState 4和http状态200时,我何时能够完成请求(因此,对象可用于新请求)?(即我可以确定之后不再有更新或回调吗?)

Thi*_*ter 3

当您需要时创建一个新的。一旦不再需要旧的,GC 就会处理它们。

但是,对于协作编辑器之类的东西,您可能需要考虑使用 WebSocket,而不是一直发送请求。小型 HTTP 请求的开销很大,而 WebSocket 连接几乎没有开销。