小编典典

Ajax密集页面:每次重用同一个XMLHttpRequest对象还是创建一个新对象?

ajax

我正在开发某种在线多用户编辑器/合作社界面,它将在一页生命周期内处理大量(例如成千上万个)ajax请求。

最佳方法:(在稳定性,兼容性,避免麻烦方面为“最佳”)

  1. 创建一个XMLHttpRequest对象,并将其重新用于每个HTTP请求

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

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

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

至于2,我猜这是内存泄漏,或者可能导致疯狂的内存/资源使用。还是可以在请求完成后以某种方式关闭或删除对象?(在哪里/如何?)还是JS垃圾收集器适当地照顾好了它本身?

以前从未尝试过3,但感觉就像两全其美。还是这样的方法是不必要的,还是我仍然缺少潜在的问题?确切地说,什么时候可以假定请求完成(因此,该对象可用于新请求),是何时接收readyState
4和http status 200?(即,我可以确定之后不会再有更新或回调了吗?)


阅读 489

收藏
2020-07-26

共1个答案

小编典典

需要时创建一个新的。一旦不再需要旧GC,GC将对其进行处理。

但是,对于像合作编辑器这样的工具,您可能需要考虑使用WebSockets而不是一直发送请求。一个小的HTTP请求的开销是巨大的,而WebSocket连接几乎没有开销。

2020-07-26