【发布时间】:2009-05-19 14:19:42
【问题描述】:
我正在使用 django 构建一个网站,让用户可以在一堆照片服务之间移动内容。正如您可以想象的那样,该应用程序执行了很多 api hits。
例如:用户将 picasa、flickr、photobucket 和 facebook 连接到他们的帐户。现在我们需要从 4 个不同的 api 中提取内容,以使这些用户数据保持最新。
现在我有一个更新每个 api 的函数,我通过线程同时运行它们。 (所有未启用的 api 在第二行返回 false,不,运行它们的开销并不大)。
这是我的问题:
使用这些 API保持内容最新的最佳策略是什么?
我有两个可能可行的想法:
-
定期更新 API(如 cron 作业),我们当时拥有的就是用户得到的。
好处:
- 它易于实施。
- 当用户加载他们的第一页时,我们总是会得到很好的数据。
陷阱:
- 我们必须一直为不活跃的用户做 api hits,这样会浪费很多带宽
- 这可能会让 api 提供者不高兴
-
在用户登录时触发更新(在页面加载时)
好处:
- 我们节省了大量带宽并降低了惹恼 api 提供者的风险
- 几乎不需要我们服务器上的资源量
陷阱:
- 我们要么必须异步进行更新(并且不会 首次登录时的任何内容)或...
- 加载第一页需要很长时间,因为我们正在 获取所有 api 数据(我用这种方法测量了 26 秒)
edit:设计很轻,设计只有两张图片,一个外部css文件,两个外部javascript文件。
另外,26 秒的数字来自运行在与服务器位于同一 LAN 的机器上的 firebug 网络监视器
【问题讨论】: