Frage

Ich baue eine Komponente einer Web-Seite, die relativ konstante Datenbankabfrage benötigt. Ich kann zwei verschiedene Ansätze für diese sehen, und ich frage mich, ob einer von ihnen besser ist als die andere, oder wenn ich eine dritte Option bin fehle.

1) Senden Sie eine AJAX-Anforderung alle 1 oder 2 Sekunden aus nach Updates zu suchen. Jede Anfrage kehrt sofort, ob es neue Daten.
2) Brand aus einer einzigen AJAX-Anforderung, die nicht zurück, bis er Daten empfängt oder eine Zeitüberschreitung auftritt. Bei einem dieses Happening, feuert sie die nächste Anforderung ab. (Ich denke, das lange Polling genannt?)

Die Anzahl der Datenbankabfragen werden das gleiche mit entweder sein, aber mit # 2 würde es weniger Anfragen werden vom Browser Brennen, die Bandbreite und Client-Ressourcen sparen könnte. Für den Server ist es besser, eine einzige PHP-Anfrage haben, dass immer aktiv und schläft zwischen Abfragen oder das Feuer auf alle paar Sekunden, fragt die DB, dann heruntergefahren wird? Oder gibt es keinen Unterschied, und ich betone darüber zu viel?

EDIT: Ich glaube, ich soll auch fest, dass dies ist eine Chat-Widget eines größeren Web-App. Eine leichte Verzögerung der Kommunikation nicht um einen Benutzer zu töten gehen, wie Chat eine sekundäre Funktion.

War es hilfreich?

Lösung

wird lange Polling besser skalieren (das heißt weniger Serverlast) als Polling, während viel bessere Antwortzeiten zu geben.

Wenn der Empfänger Umfragen, die durchschnittliche Fahrzeit einer Nachricht wird Ihre Pollintervall Hälfte sein.

Mit langen Polling, sein Instant -. Der Server wartet nur, wenn es nichts zu sagen

Wenn Sie Chat Messaging tun, gehen lange Umfrage; es ist eine Usability-Sache.

Die Abwärtsseite mit langen Polling ist es kompliziert umzusetzen; aber es ist nicht so viel komplizierter, und es ist weitgehend umgesetzt. Also, wenn Sie nicht ein Off-the-shelf-Rahmen für Ihren Webserver der Wahl verwenden können, können Sie einstellen, um eine einigermaßen zu schreiben und Sie bekommen es funktioniert.

Andere Tipps

Sie können auch unter WebSockets , Teil der neuesten Browsern (oder über eine emulierte < a href = "http://github.com/gimite/web-socket-js" rel = "nofollow"> Flash-Datei auf Ihrer Seite fallen)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top