【问题标题】:Rendering Huge Dataset from API to Table将庞大的数据集从 API 渲染到表
【发布时间】:2016-08-26 16:58:37
【问题描述】:

我对一个 API 进行了 GET,然后我得到了 1000 个帐户。

然后,我使用datatable 来渲染我的表格。


性能似乎有点慢,我正在努力改进它。 我做了一些研究,找到了this,但我无法访问数据库,但我可以访问将这 1000 个帐户作为数组返回的 API。


我当然愿意接受有关此过程的所有反馈和建议。


这是我的数据表设置

var account_table =  $('#account-table').DataTable({
  "bPaginate": true,
  "processing": true,
  "serverSide": true,
  "ajax": "scripts/server_processing.php",
  "deferLoading": 10,

});

对于“ajax”:“scripts/server_processing.php”,由于我使用的是API,我可以这样做吗

"ajax": "https://jsonblob.com/57c08bb2e4b0dc55a4f0eec7" ????

这是我所有的示例数据:https://jsonblob.com/57c08bb2e4b0dc55a4f0eec7

【问题讨论】:

  • 这 1000 条记录的长度(字节)是多少?向服务器发出请求需要多长时间?
  • @Dekel :截至目前,请求返回 1000 个帐户对象的时间不到 1 秒。
  • @saj :我试过了,但它似乎不起作用。你有没有让它工作?你以前处理过这个吗?任何进一步的建议会很棒?
  • @ihue,10 条记录需要多少时间?还是100?还是500?许多而不是获取所有 1000 您应该只获取前 2-5 页,当有人转到第 4 页时,只需延迟获取第 6-10 页。

标签: jquery html ajax datatables


【解决方案1】:

这个过程中最慢的部分肯定是通过网络获取这些帐户。

您可以将它们缓存起来,并且每隔x 时间只请求一次,而不是每次都请求它们。

伪代码

function getAccounts() {
    if (!cache.has("accounts")) {
        // supposedly cache data for 1 hour
        cache.set("accounts", getAccountsFromAPI(), 3600);
    }

    return cache.get("accounts");
}

【讨论】:

  • 感谢您的建议。虽然 缓存 在这种情况下看起来很合适,但是如果用户创建/更新帐户怎么办,那么,我将导致我们过时的帐户信息。我该如何处理?关于缓存还有什么建议吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-23
相关资源
最近更新 更多