2009-05-19 82 views
0

我在用django构建一个网站,用户可以在一系列照片服务之间移动内容。正如你可以想象的应用程序做了很多API点击。使用外部API的时候加快页面加载速度

例如:用户将picasa,flickr,photobucket和facebook连接到他们的帐户。现在我们需要从4个不同的apis中提取内容,以保持用户数据的最新状态。

现在我有一个函数,更新每个api,我通过线程同时运行它们。 (所有未启用的api在第二行都会返回false,不会有太多开销来运行它们)。

这里是我的问题:

什么是最好的策略保持内容使用这些API的日期

我有两个想法,可能的工作:

  1. 更新的API定期(如cron作业),也不论我们当时是用户得到什么。

    好处:

    • 它很容易和简单的实现。
    • 当用户加载第一页时,我们总是会有非常好的数据。

    陷阱:

    • 我们要做的API打所有的时间是不活跃的,浪费了大量的带宽
    • 这将可能使API提供商不高兴
    • 用户
  2. 触发更新时在用户登录(在PAG电子负载)

    • 我们节省了一堆的带宽和运行得罪了该API提供商
    • 不需要我们的服务器上的资源几乎量的风险较小

    陷阱:

    • 我们必须异步执行更新(并且在首次登录时不会有 任何内容)或...
    • 第一页会需要很长的时间来加载,因为我们 让所有的API数据(我测量26秒这样)

编辑:在设计非常轻巧,设计只有两个图像,一个外部CSS文件和两个外部JavaScript文件。

此外,26秒数来自一台机器是在同一个局域网上的服务器

回答

2

个人上运行Firebug的网络监视器,我会选择你提到的第二个方法。第一次登录时,可以异步查询每项服务,并在进程运行时向用户显示某种活动/状态栏。然后,您可以在从每个服务获取结果时填充页面。

然后,您可以缓存每个用户的这些调用结果,这样您就不必每次都调用apis。

这可以减轻服务器的负担,快速加载您的页面,并为用户提供一些活动指示(以及在页面加载内容时发生严重更新)。我认为这些加起来可以提供最好的用户体验。

相关问题