2009-05-19 80 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。

這可以減輕服務器的負擔,快速加載您的頁面,併爲用戶提供一些活動指示(以及在頁面加載內容時發生嚴重更新)。我認爲這些加起來可以提供最好的用戶體驗。

相關問題