【问题标题】:Multiple api requests to the same domain produce slower response time对同一域的多个 api 请求会产生较慢的响应时间
【发布时间】:2021-10-30 20:14:59
【问题描述】:

我在 google chrome 浏览器上使用本机获取。尝试向同一个域发送多个 API 请求。

const parallel = 100
Promise.all(Array(parallel).fill('').map(() => fetch(url, {method: 'POST', body: JSON.stringify(data) })))

data 变量本身约为 41802kb。

调试网络,发现Request sent耗时最长

比较相同的请求,但当parallel=10

我能做些什么来改善这一点?使用 node-fetch 包的 nodejs 具有相同的行为。是否有任何解决方案可以在不损失快速响应时间的情况下并行向同一个域运行多个请求?

【问题讨论】:

  • 您是否可以控制 API,您是否会被限制为 100 个请求?许多第 3 方 API 会限制调用以阻止潜在的 DDOS
  • 不,我不知道。我试图指向我的本地 http 服务器,它接受请求并简单地用 http 代码 200 响应。结果相同
  • stackoverflow.com/questions/55973968/…。我认为这会对您有所帮助... Chrome 会限制与同一域的连接数量。尝试运行相同的测试,但不使用 chrome
  • 那些与http1相关的限制。我使用的 api 服务器支持 http2。此外,在 nodejs 中我有相同的
  • 可能值得将这些详细信息添加到您的原始帖子中。

标签: javascript node.js networking fetch google-chrome-devtools


【解决方案1】:

当您在对同一域的并行请求中失去快速响应时间时, 这取决于许多因素 例如,你应该在这里找到一个瓶颈,

1 - 网速

2 - API 服务器下行速度

3 - API 服务器上的比率控制和 DDoS 控制

等等……

要检查互联网速度,您可以检查您的带宽 并部署一些本地 HTTP 服务器并发送并行请求并比较结果 据我所知,问题很少来自客户端代码,通常取决于所说的项目

【讨论】:

  • 我尝试创建本地 HTTP 服务器,它只接受状态码为 200 的请求和响应。结果相同
  • 您的数据在您的本地 HTTP 服务器中提供了什么/
  • 你的本地 http 服务器是什么?
  • ``` const http = require('http') const PORT = process.env.PORT || 5001 const server = http.createServer(async (req, res) => { res.writeHead(200, { 'Content-Type': 'application/json' }) res.write(JSON.stringify({ resource: 1 } )) res.end() }) server.listen(PORT, () => { console.log(server started on port: ${PORT}) }) ```
猜你喜欢
  • 1970-01-01
  • 2016-08-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-05
  • 1970-01-01
  • 2023-04-05
  • 1970-01-01
  • 2021-07-17
相关资源
最近更新 更多