2009-05-19 8 views
0

Ich erstelle eine Website mit Django, mit der Nutzer Inhalte zwischen einer Reihe von Fotodiensten verschieben können. Wie Sie sich vorstellen können, macht die Anwendung viele API-Treffer.Beschleunigung der Seitenladevorgänge bei Verwendung externer APIs

zum beispiel: benutzer verbindet picasa, flickr, photobucket und facebook zu ihrem konto. Jetzt müssen wir Inhalte aus 4 verschiedenen APIs abrufen, um diese Benutzerdaten auf dem neuesten Stand zu halten.

gerade habe ich eine a-Funktion, die jede API aktualisiert und ich alle sie gleichzeitig über Threading ausführen. (alle APIs, die nicht aktiviert sind, geben in der zweiten Zeile false zurück, nein, es ist nicht viel Overhead, um alle auszuführen).

Hier ist meine Frage:

Was ist die beste Strategie für Inhalte auf dem neuesten Stand zu halten diese APIs verwenden?

Ich habe zwei Ideen, die funktionieren könnte:

  1. Aktualisieren Sie die apis periodisch (wie ein Cron-Job) und was wir zur Zeit haben, ist, was der Benutzer bekommt.

    Vorteile:

    • Es ist leicht und einfach zu implementieren.
    • Wir haben immer ziemlich gute Daten, wenn ein Benutzer seine erste Seite lädt.

    Tücken:

    • wir api zu tun haben, trifft die ganze Zeit für Benutzer, die nicht aktiv sind, die viel Bandbreite
    • vergeudet Es wird wahrscheinlich die api Anbieter unglücklich
    • machen
  2. Trigger-Updates, wenn sich der Benutzer anmeldet (auf einer pag Eload)

    Vorteile:

    • sparen wir eine Menge Bandbreite und laufen weniger Gefahr, die api Anbieter
    • nerven nicht annähernd die Menge der Ressourcen auf unseren Servern erfordern

    Tücken:

    • wir müssen entweder das Update asynchron durchführen (und haben keine irgendetwas bei der ersten Anmeldung) oder ...
    • die erste Seite eine sehr lange Zeit dauern wird, geladen werden, da wir sind alle api Daten bekommen (ich habe 26 Sekunden auf diese Weise gemessen)

bearbeiten: die Design ist sehr leicht, das Design hat nur zwei Bilder, eine externe CSS-Datei und zwei externe Javascript-Dateien.

Auch die 26 Sekunden-Nummer aus dem Monitor firebug Netzwerk kommt auf einem Computer ausgeführt wird, die auf dem gleichen LAN wie der Server

Antwort

2

persönlich war, würde ich für die zweite Methode entscheiden Sie erwähnen. Wenn Sie sich das erste Mal anmelden, können Sie jeden Dienst asynchron abfragen und dem Benutzer während der Ausführung der Prozesse eine Art Aktivitäts-/Statusleiste anzeigen. Sie können die Seite dann füllen, wenn Sie die Ergebnisse von jedem der Dienste erhalten.

Sie können dann die Ergebnisse dieser Anrufe pro Benutzer zwischenspeichern, so dass Sie die apis nicht jedes Mal aufrufen müssen.

Das erleichtert die Belastung Ihrer Server, lädt Ihre Seite schnell und gibt dem Benutzer einen Hinweis auf Aktivität (zusammen mit inkrementellen Aktualisierungen der Seite, während deren Inhalt geladen wird). Ich denke, diese Summe ergibt die beste User Experience, die Sie bereitstellen können.

Verwandte Themen