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

时间:2012-06-18 08:50:48

标签: javascript ajax xmlhttprequest instance reusability

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

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

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

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

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

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

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

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

1 个答案:

答案 0 :(得分:3)

在需要时创建一个新的。一旦不再需要,GC将处理旧的。

但是,对于类似合作编辑器的内容,您可能需要考虑使用WebSockets而不是始终发送请求。小型HTTP请求的开销很大,而WebSocket连接几乎没有开销。