与邮递员休息客户端相比,nodejs / curl http请求很慢

时间:2015-03-30 00:33:47

标签: javascript node.js http postman

我从node.js和Postman-Rest Client(chrome app)调用Rest API。 始终使用相同的计算机,相同的端点和相同的参数。

在node.js中,http为~400ms,https为~700ms。 在Postman中,我得到了~250ms的http和https。

我在node.js中使用的库:http,https,request,kinvey(api的节点客户端)。所有这些都或多或少地得到了相同的结果。

为什么我的节点速度较慢?

node.js 0.10.36

编辑: 它不是关于节点,我得到与curl相同的结果。 当使用XMLHttpRequest在浏览器中运行时,我会获得更好的时间。 从分析日志我发现TCP连接和SSL握手大约需要500ms。可能是TCP连接和SSL握手在浏览器中的工作方式不同。

1 个答案:

答案 0 :(得分:2)

在这里你可以找到一些帮助。 我也面临着linux实例上nodejs应用服务器的问题。但是不要责怪nodejs,因为真正的问题在linux系统中。

问题:来自机器的任何出站请求都需要查找域名,因此它始终会查找DNS条目&总是与安全/不安全的协议握手。这实际上是拍摄时间的场景。 您可以通过执行CURL请求进行验证。

curl --trace-time -v https://outboundserver.com

解决方案:我们必须在自己的DNS条目中列出出站服务器的IP列表。看看下面......

在Windows中:自动在自己的dns条目中映射服务器。

在Linux中:我们必须手动添加与IP地址对应的主机。 在/ etc / hosts文件中手动添加一个条目,如localhost。

之类的任何配置

127.0.0.1 localhost outbound.servers.ip.address www.outboundserver.com

最后再次检查curl请求,它应该给出更快的响应。

curl --trace-time -v https://outboundserver.com