我从 node.js 和 Postman-Rest 客户端(chrome 应用程序)调用 Rest API。 始终使用同一台计算机、相同的端点和相同的参数。
在 node.js 中,我得到 ~400ms 的 http 和 ~700ms 的 https。 在 Postman 中,http 和 https 大约需要 250 毫秒。
我在 node.js 中使用的库:http、https、request、kinvey(api 的 Node 客户端)。他们都或多或少得到了相同的结果。
为什么我的 Node 比较慢?
Node .js 0.10.36
编辑: 这与 Node 无关,我用 curl 得到了相同的结果。 当使用 XMLHttpRequest 在浏览器中运行时,我得到了更好的时间。 通过分析日志,我发现 TCP 连接和 SSL 握手大约需要 500 毫秒。可能是 TCP 连接和 SSL 握手在浏览器中的工作方式不同。
最佳答案
在这里您可以找到一些帮助。 我还面临 Linux 实例上的 nodejs 应用程序服务器问题。但不要责怪 nodejs,因为真正的问题是在 linux 系统中。
问题:来自机器的任何出站请求都需要找到域,因此它总是查找 DNS 条目并且总是使用安全/不安全协议(protocol)进行握手。这实际上是需要时间的场景。 您可以通过 CURL 请求进行验证。
curl --trace-time -v https://outboundserver.com
解决方案:我们必须在我们自己的 DNS 条目中将出站服务器的 IP 列入白名单。看看下面...
在 Windows 中:自动在自己的 dns 条目中映射服务器。
IN Linux : 我们必须手动添加 IP 地址对应的主机。 在/etc/hosts 文件中手动添加任何配置(如 localhost)下的条目。
127.0.0.1 本地主机
outbound.servers.ip.address www.outboundserver.com
最后再次检查 curl 请求,它应该会提供更快的响应。
curl --trace-time -v https://outboundserver.com
关于javascript - 与 postman rest 客户端相比,nodejs/curl http 请求速度较慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29336688/