【问题标题】:Long respond time when getting data from API with AJAX使用 AJAX 从 API 获取数据时响应时间长
【发布时间】:2018-04-12 06:07:01
【问题描述】:

我正在使用本地环境在 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);
    }
});

【问题讨论】:

  • 你能告诉我们创建表的jquery代码吗?还有api?
  • 使用chrome开发者工具调试。

标签: jquery ajax performance


【解决方案1】:

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

当它是用户流程的一部分时,最好在您得到响应后显示呼叫正在进行的反馈以及呼叫是完成并成功还是失败的一些指示。如果可能,让用户在等待外部 API 的反馈时提供其他输入,这样可以消除“缓慢而痛苦”的感觉。

【讨论】:

  • 这并不是真正的目的。我已经知道你在说什么了。 Api 响应时间不会太长...
【解决方案2】:

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

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

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

感谢大家的帮助

【讨论】:

    猜你喜欢
    • 2016-07-20
    • 1970-01-01
    • 2022-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-22
    • 2020-08-17
    • 1970-01-01
    相关资源
    最近更新 更多