gpt4 book ai didi

javascript - Web Workers 处理 AJAX 调用 - 优化矫枉过正?

转载 作者:IT王子 更新时间:2023-10-29 03:07:54 27 4
gpt4 key购买 nike

我正在处理使用 Web Worker(如果可用)处理所有 AJAX 请求的代码。这些工作人员几乎只做 XMLHttpRequest 对象处理(没有额外的计算)。 worker 创建的所有请求都是异步的 (request.open("get",url,true))。

最近,我遇到了一些关于这段代码的问题,我开始考虑是应该花时间修复它,还是干脆放弃整个解决方案。

到目前为止,我的研究表明这段代码实际上可能会损害性能。但是,我找不到任何可靠的来源来支持这一点。我仅有的两个发现是:

  • 2岁jQuery feature suggestion使用网络 worker 进行 AJAX 调用
  • this SO 问题似乎询问了一些不同的东西(在网络 worker 中使用同步请求与 AJAX 调用)

有人可以为我指出讨论此问题的可靠来源吗?或者,有什么基准可以打消我的疑虑吗?

[编辑] 当 WebWorker 还负责解析结果 (JSON.parse) 时,这个问题会变得更加有趣。异步解析是否提高了性能?

最佳答案

我创建了一个 proper benchmark for that on jsperf .根据浏览器的不同,WebWorker 方法比原始 ajax 调用慢 85-95%


注意事项:

  • 由于每个请求的网络响应时间可能不同,我只测试了 new XMLHttpRequest()JSON.parse(jsonString);。没有进行真正的 AJAX 调用。
  • 测量 WebWorker 设置和拆卸操作
  • 请注意,我正在测试单个请求,webworker 方法的结果对于多个同时请求可能更好
  • Calvin Metcalf 向我解释说在 jsperf 上比较同步和异步不会给出准确的结果,他创建了 another benchmark这消除了异步开销。结果仍然表明 WebWorker 方法明显更慢。
  • 来自 Reddit discussion我了解到在主页和 WebWorker 之间传递的数据被复制,并且必须在此过程中进行序列化。因此,仅使用WebWorker 进行解析意义不大,数据无论如何都必须进行序列化和反序列化,然后才能在主页上使用它们。

关于javascript - Web Workers 处理 AJAX 调用 - 优化矫枉过正?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18768452/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com