Django 在使用外部API时加速页面加载';s

Django 在使用外部API时加速页面加载';s,django,api,Django,Api,我正在用django建立一个网站,允许用户在一系列照片服务之间移动内容。正如您可以想象的那样,应用程序进行了大量的api访问 例如:用户将picasa、flickr、photobucket和facebook连接到他们的帐户。现在我们需要从4个不同的API中提取内容,以使这些用户数据保持最新 现在我有一个更新每个api的函数,我通过线程同时运行它们。(所有未启用的api在第二行返回false,不,运行它们并没有太大开销) 我的问题是: 使用这些API使内容保持最新的最佳策略是什么 我有两个可能有效

我正在用django建立一个网站,允许用户在一系列照片服务之间移动内容。正如您可以想象的那样,应用程序进行了大量的api访问

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

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

我的问题是: 使用这些API使内容保持最新的最佳策略是什么

我有两个可能有效的想法:

  • 定期更新API(如cron作业),我们当时拥有的就是用户得到的。

    好处:

    • 它易于实现
    • 当用户加载他们的第一个页面时,我们总是有相当好的数据
    陷阱:

    • 我们必须一直为不活跃的用户进行api点击,这浪费了大量带宽
    • 这可能会让api提供者不高兴
  • 在用户登录时触发更新(页面加载)

    好处

    • 我们节省了大量带宽,并降低了激怒api提供商的风险
    • 几乎不需要我们服务器上的资源量
    陷阱:

    • 我们要么以异步方式进行更新(而不是 任何第一次登录)或
    • 第一页需要很长时间才能加载,因为我们 获取所有api数据(我以这种方式测量了26秒)
  • 编辑:设计非常轻巧,设计只有两个图像、一个外部css文件和两个外部javascript文件


    另外,26秒的数字来自firebug网络监视器,该监视器运行在与服务器位于同一LAN上的机器上

    就个人而言,我会选择您提到的第二种方法。第一次登录时,可以异步查询每个服务,在进程运行时向用户显示某种活动/状态栏。然后,您可以在从每个服务返回结果时填充页面

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

    这样可以减轻服务器上的负载,快速加载页面,并为用户提供一些活动指示(以及在加载内容时对页面的增量更新)。我认为这些加起来就是你能提供的最好的用户体验