我正在研究某种在线多用户编辑器/ coop界面,它将在一个页面生命周期内做很多(如数千)ajax请求。
什么是最好的:(在稳定性,兼容性,避免麻烦方面'最好')
创建一个XMLHttpRequest对象并为每个HTTP请求重用该对象
为每个HTTP请求创建一个新的XMLHttpRequest对象
管理XMLHttpRequest对象的动态“池”,在启动HTTP请求时创建一个新对象,并且没有现有对象可用,并在上一个请求成功完成时将先前创建的对象标记为“可用”< / p>
我认为1不是一个选项,因为某些请求可能会失败,我可能会在前一个请求尚未完成时发起新请求等等。
对于2,我猜这是内存泄漏,或者可能导致内存/资源使用疯狂。或者我可以在请求完成时以某种方式关闭或删除对象? (在哪里/如何?)或者JS垃圾收集器是否正确地处理了这个问题?
从未尝试过3次,但感觉就像两个世界中最好的一样。或者是一种不必要的方法,还是我仍然缺少潜在的问题?确切地说,当我接收readyState 4和http状态200时,我何时能够完成请求(因此,对象可用于新请求)? (也就是说,我可以确定之后不再有更新或回调吗?)
答案 0 :(得分:3)
在需要时创建一个新的。一旦不再需要,GC将处理旧的。
但是,对于类似合作编辑器的内容,您可能需要考虑使用WebSockets而不是始终发送请求。小型HTTP请求的开销很大,而WebSocket连接几乎没有开销。