2009-05-19 5 views
0

djangoを使用して、ユーザーが一連の写真サービスの間でコンテンツを移動できるようにするサイトを構築しています。あなたが想像しているように、アプリケーションは多くのAPIヒットを行います。外部APIを使用しているときにページが高速に読み込まれる

たとえば、ユーザーは、自分のアカウントにpicasa、flickr、photobucket、およびfacebookを接続します。今度は、このユーザーのデータを最新の状態に保つために、4つの異なるAPIからコンテンツを取得する必要があります。

今、私は各APIを更新する関数を持っており、スレッドを使ってそれらを同時に実行します。 (有効にされていないすべてのAPIは2行目でfalseを返しますが、すべてを実行するオーバーヘッドはそれほどありません)。ここで

は私の質問です:

ための最善の戦略は、これらのAPIを使用して日付にコンテンツを追従していますか?

  1. 更新(cronジョブなど)、定期的にAPIと一度に何でも私たちが持っているが、ユーザーが得るものです:

    は、私は2つの働くかもしれないアイデアを持っています。

    メリット:

    • これは、実装するのは簡単でシンプルです。
    • ユーザーが最初のページを読み込んだときには常にかなりのデータが得られます。

    落とし穴:

    • 我々は、APIをしなければならないが、帯域幅
    • の多くを無駄にアクティブでないユーザーのためにすべての時間を、ヒットそれはおそらく
    • APIプロバイダは不幸になります
  2. トリガーの更新時にPAGに(ユーザがログインしますELOAD)

    がメリット

    • 我々は、帯域幅の束を保存し、
    • は、当社のサーバー上のリソースのほぼ量を必要としないAPIプロバイダをむかつくのより少ない危険を冒します

    落とし穴:

    • 更新を非同期的に行う必要があります(最初のログイン時には はありません)。または...
    • 我々は は、すべてのAPIデータを取得しているため、最初のページには、(私は26秒をこのように測定しました)をロードするために

編集非常に長い時間がかかります。デザインは非常に軽く、デザインには2つのイメージ、外部のCSSファイル、2つの外部のjavascriptファイルしかありません。

また、26秒の数が

答えて

2

個人的にサーバと同じLAN上にあったマシン上で実行されている放火魔ネットワークモニタから来て、私はあなたが言及第二の方法を選ぶでしょう。初めてログインすると、各サービスを非同期に照会して、プロセスの実行中にユーザーに何らかの種類のアクティビティ/ステータスバーを表示することができます。次に、各サービスから結果を取得しながら、ページを作成することができます。

その後、毎回apiを呼び出す必要がないように、ユーザーごとにこれらの呼び出しの結果をキャッシュすることができます。

これは、サーバーの負荷を軽減し、ページを高速に読み込み、ユーザーにコンテンツの読み込み時の不正な更新を伴うアクティビティの表示を提供します。私はそれらがあなたが提供できる最高のユーザーエクスペリエンスに加わると思います。

関連する問題