【问题标题】:Speed up Podio API加速 Podio API
【发布时间】:2018-03-12 08:29:53
【问题描述】:

上下文

我们将 Podio 与 Globiflow 和 Webmerge 结合使用,它在大多数情况下都能满足我们的需要,但现在我们开始达到 Podio API 的极限。

问题

在前端门户中,我们向客户公开播音数据。这变得非常缓慢......我们做了一些负载测试/计时。 更准确地说;例如,此调用需要 20 秒:

\PodioItem::filter(19087964, ['filters' => ['request-sent-to' => [$company->id],],'limit' => 200, 'offset' => 0 ]);

问题

我们可以做些什么来加快速度?

仅供参考:我们确实应用了所有标准的东西来减少 API 使用和优化我们的调用,例如:

  • 避免在循环内发出 API 请求。而不是获取 循环中的单个对象,获取对象的集合 一个 API 操作。例如。过滤项目
  • 尽可能缓存结果。当您处于 向公众展示数据(即每个人都看到相同的输出)。

  • 不要轮询更改。而不是轮询 Podio 来查看您的 内容已更改使用 webhook 或推送来接收通知。

  • 使用日志记录查看您发出了多少请求

  • 使用“fields”参数捆绑响应

【问题讨论】:

    标签: api podio


    【解决方案1】:

    你可以尝试更多的东西:)

    1. 如果您不需要使用相同的过滤结果,请将'remember' => false 添加到您的通话中。 “记住”标志导致 Podio API 缓存过滤结果,这需要时间。
    2. 将 'limit' => 200 更改为更小的值(如果您实际上并不需要全部 200 个项目并且只显示 30 个,则不要获取它们)。
    3. 限制返回的数据量(Can podio's api filter item response with only a mini detail level for each item?)
    4. 更好的办法是缓存结果并仅请求自上次运行脚本以来已更改的项目。每次运行都获得所有项目是非常浪费的。根据您的请求,您似乎还没有使用过 webhook。
    5. Podio API 不能很好地替代自己的数据库。如果您感觉自己正在使用 Podio API,而使用自己的数据库可以更轻松地实现相同的目的 - 那么您的感觉是正确的。设置数据库并将您需要大量查询的所有数据移动到那里,然后设置一些同步层,该层将在 webhook 上工作并将更改从 Podio API 复制到您的数据库。

    【讨论】:

    • 您好 Pavlo,感谢您的回复。 1.记住真假无所谓。这需要很多时间。 2. 我们需要所有的请求。如果我们循环,则需要 20 秒。 3.限制数据量不起作用。我们需要展示一切。 4. 我们尝试先缓存结果,但这会导致更改滞后,因此我们再次将其删除。 5. 本地db副本与本地缓存相同,但在db而不是磁盘中。 6. 我们将研究 webhook,但这将对我们的系统产生巨大的变化......这里欢迎提示和技巧......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-11
    • 2013-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多