2009-06-18 11 views
2

Wir sind in den Würfen der Neugestaltung eines Bildschirms von "alten Stil" zu bearbeiten und senden, AJAXy Stil mit automatischem Speichern alle paar Sekunden.AJAX führt zu mehr "chattiness"

Das Ergebnis wird viel mehr, aber viel kleiner Server/db Rundreisen. Wenn ein Benutzer beispielsweise ein Textfeld bearbeitet, speichern wir seine Änderungen alle 60 Sekunden automatisch über AJAX. Derzeit würden sie ein oder mehrere solcher Felder aktualisieren und dann die gesamte Seite einreichen, und die gesamte Seite würde neu geladen werden.

Wir tun dies, um die Seite für den Benutzer viel schneller zu machen - eine offensichtliche Verwendung von AJAX. Aber hat irgendjemand von Ihnen Server-/Db-Performance-Probleme im Zusammenhang mit einem solchen Ansatz festgestellt? Gibt es Fallstricke, wäre es gut, sich im Vorfeld einer Server/DB-Roundtrip-Perspektive bewusst zu sein?

Dank

+2

Ich hoffe, Sie planen, den Submit/Save-Button zu halten. – TheTXI

Antwort

2

erwähnte ich dieses Problem in this answer zu DWR Bezug (ein Java AJAX-Framework).

AJAX ist verführerisch in was es bietet. Sie werden (wahrscheinlich) mehr Daten umleiten (in Bezug auf einzelne Anfragen/Antworten). Mein Rat ist, dies zu überwachen/zu messen und zu bestimmen, was in einem AJAX-Kontext wichtig ist und wie teuer das Round-Triping ist (in Bezug auf Netzwerk und CPU). Wie Sie bereits festgestellt haben, wirkt sich dies auf Ihre Serverprozesse und die Backing-Datenbanken aus.

Sie können feststellen, dass Caching für verschiedene Datentypen erforderlich ist, oder einige Daten einfach zu teuer sind, um vom POV einer AJAX-Infrastruktur abgerufen zu werden. Sie können auf der Server-Seite und (oder natürlich) auf der Webseite selbst zwischenspeichern.

Ich habe gesehen, Client-Sites implementieren erhebliche Mengen von AJAX-fähigen Webseiten, nur um es zu beschränken oder zurückrollen, aufgrund der unvorhergesehenen Auswirkungen auf das Back-End. Mit ein wenig Bewusstsein und etwas Anstrengung bei der Überwachung der Auswirkungen kann dies oft vermieden oder zumindest im Voraus verstanden und angemessen gemildert werden.

+0

Testen Sie die Anwendung auch in Ihren Entwicklungs-/Staging-Umgebungen, um sicherzustellen, dass Ihre App korrekt skaliert wird. Abhängig von Ihrer Umgebung kann auch etwas wie Google Gears/lokaler DOM-Speicher verwendet werden, um den Fortschritt in Intervallen auf der Client-Seite zu speichern, mit einem letzten "Save" -Push, der dasselbe tut wie Ihr ursprüngliches Formular; etwas von einem Performance-Standpunkt zu betrachten. – ajm

0

Ich bin noch nie auf Leistungsprobleme gestoßen, indem ich das System und nicht den Benutzer entscheiden ließ, wann es angebracht ist, etwas in einer Datenbank zu speichern.

Ich könnte mir vorstellen, einige Probleme der Datenintegrität, aber ich nehme an, die sind Ihnen nicht wichtig.

Verwandte Themen