使用AJAX从API获取数据时响应时间长

时间:2018-04-12 06:07:01

标签: jquery ajax performance

我正在使用本地环境在Mac上工作。我拥有所有的API。

我有一个对API执行ajax调用的网页。 (例如http://1.api.loc/v1.0/getSomthing?id=1) 此API使用PHP编码。 API 1再次调用Api 2.(http://2.api.loc/v1.0/getSomthingSpecific?id=1

第二次调用是在PHP中使用curl完成的。 即使使用此修复程序(add context header

,我也会使用file_get_content()获得相同的结果

然后,我的JS代码(Jquery)接收结果,解析它并在我的HTML页面中填充一个表。

我遇到的第一个问题是,当我直接呼叫Api2(通过网络浏览器)时,结果显示在200毫秒。当我调用Api1(调用Api 2)时,结果显示在35秒内。经过一番调查,我发现DNSLookup非常慢。我修改了这个更改我的/etc/hosts配置。

现在两个API运行良好,并在几毫秒内响应(直接在Web浏览器或curl命令行上调用)。问题出在我的JS代码中。当我进行ajax调用时,需要+30秒才能得到响应。

$.ajax({
    type: "GET",
    url: "http://1.api.loc/v1.0/getSomething",
    data:{'id' : 1},
    success: function (data) {
        handler(data);
    }
});

2 个答案:

答案 0 :(得分:0)

异步调用外部API是最好的选择。

当它是用户进程的一部分时,最好显示正在进行呼叫的反馈,并在收到响应后显示呼叫是否已完成,成功或失败。如果可能的话,让用户在等待外部API的反馈时给出其他输入,这会消除“缓慢而痛苦”的感觉。

答案 1 :(得分:0)

我终于找到了答案。 实际上,Api 1以JSON格式响应,而Api2只响应没有特定标头的响应。这就是重点!

在回显结果之前添加这个修复了错误:

header('Content-Type: application/json');

感谢所有人的帮助