【问题标题】:How to deal with External API latency如何处理外部 API 延迟
【发布时间】:2012-08-16 08:38:16
【问题描述】:

我有一个应用程序正在使用 Curl 获取多个电子商务网站,以寻找最优惠的价格。 此过程会返回一个表格,比较所有搜索网站的价格。

但是现在我们有一个问题,店铺数量开始增加,而加载时间实际上在用户体验方面是无法接受的。 (实际上是 10 秒页面加载)

因此,我们决定创建一个数据库,并开始将所有 Curl 过滤结果注入到该数据库中,以减少 DNS 调用,并增加 Pageload。

我想知道,尽管我们付出了所有努力,实现 Memcache 模块仍然是一个优势吗? 我的意思是,它会更有帮助还是只是浪费时间?

Memcache 的想法是受到这个话题的启发,来自一个有类似问题的人:Memcache to deal with high latency web services APIs - good idea?

【问题讨论】:

    标签: php web-services curl memcached latency


    【解决方案1】:

    Memcache 可能会有所帮助,但(在我看来)这是一种解决问题的奇怪方法。如果是我,我会这样做:

    首先,我确实会在我的数据库中缓存所有可以缓存的内容。当用户搜索或任何触发此操作的交互时,我会向他们显示一个“搜索”页面,其中包含服务器当前具有的任何结果,以及一个在异步搜索完成时填满的进度条。

    我会使用 AJAX 在其他结果可用时添加它们。我想象搜索大约需要十秒钟 - 它可能需要更长的时间,这很好。只要您有进度条,您的用户就会欣赏并理解 Stuff Is Going On。

    显然,通过您的系统进行的搜索越多,您的数据库中的最新数据就越多。我会使用不到半小时的缓存结果,我还会记录搜索字词并确保始终缓存前 100 个(左右)搜索。

    了解您的客户并提供他们想要的东西。这与任何特定技术没有太大关系,但一切都与您预测他们想要什么的能力有关(或编写为您预测的软件!)

    哦,PHP 完全没有理由不能胜任这项工作。将一堆不相关的接口捆绑在一起是 PHP 最擅长的事情之一。

    【讨论】:

      【解决方案2】:

      您的结果是在 PHP 的范围之外找到的。当一个 cronjob 可以很容易地用于填充您的数据库并且您的 PHP 脚本可以简单地查询您的数据库时,不要费心在 PHP 中破解一个结果。

      如果您打算只坚持使用 PHP,那么我建议您更改脚本以根据您填充的结果索引您的数据库。要填充结果,请让一个 cronjob ping 一个用户无法访问的 PHP 脚本,该脚本将执行您的所有 curl 功能。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-07-19
        • 1970-01-01
        • 1970-01-01
        • 2010-12-08
        • 2015-10-08
        • 1970-01-01
        • 2018-01-09
        • 2020-03-28
        相关资源
        最近更新 更多