Antworten:
Es hängt davon ab, was Sie tun und wie Sie es tun.
Wenn Sie das Laden ganzer Seiten durch AJAX-Anforderungen ersetzen (dh nur AJAX-Aufrufe ausführen, wenn ein Benutzer auf das Laden ganzer Seiten klickt), verringert AJAX die Serverlast, da Sie (vermutlich) weniger verarbeiten und weniger zurückgeben Daten.
Wenn Sie dagegen den AJAX-Typ für die automatische Aktualisierung hinzufügen, der den Server alle paar Sekunden abfragt, kann dies die Auslastung je nach Benutzer erhöhen (die Serverlast wird möglicherweise nicht erhöht, wenn der Benutzer weiterhin F5 drückt, um die Aktualisierung trotzdem manuell durchzuführen) Die meisten Leute machen das im Allgemeinen stundenlang nicht.
Eine weitere AJAX-Optimierung besteht darin, beim Scrollen nur mehr Daten zu laden. In diesem Fall ist die Verarbeitung verschwendet, wenn der Benutzer nicht ganz nach unten scrollt.
Natürlich kann die tatsächliche Implementierung die Ergebnisse in beide Richtungen verzerren. Dies sind typische Ergebnisse unter der Annahme einigermaßen guter Implementierungen.
Natürlich dient es dazu, die Serverlast zu verringern. Schauen Sie sich diese Präsentation @ jsconf'09 an - wie Facebook Ajax dazu verwendet hat.
Ajax ist asynchron. Serverkommunikation - und das können Sie auf vielfältige Weise nutzen. Die Leute verwenden es zum Laden von einfachem JSON in das Echtzeit-Web und für alles dazwischen.
Denken Sie daran - die eigentliche Herausforderung ist das Gleichgewicht zwischen Client und Server. Bemühen Sie sich, jede Partei dazu zu bringen, ihre Arbeit so zu erledigen, dass das System optimiert wird und Sie offensichtliche Vorteile von wahrgenommener Reaktionsfähigkeit und echter Geschwindigkeit erhalten.
Es gibt andere Faktoren, die Sie nicht berücksichtigen - in den meisten Fällen erhöht AJAX die Serverlast. In einem typischen Nicht-Ajax-Szenario lädt ein Benutzer alle paar Sekunden oder Minuten eine große Seite. Ja, diese einzelne Seite ist etwas mehr Arbeit für den Server, aber zwischen den Anforderungen zum Wiederherstellen und Bearbeiten anderer Anforderungen bleibt genügend Zeit. In einem AJAXified-Szenario besteht das Laden einer einzelnen Seite jetzt aus Dutzenden kleiner Treffer, die den Server ständig hämmern und auf Antworten warten.
Es ist ein bisschen wie der Tod durch 1000 Schnitte - keine der Anfragen ist an und für sich so groß, aber das Gesamtgewicht ist ein Killer. Vor allem, wenn Sie bedenken, dass diese kleinen Anfragen genauso teuer sind wie eine ganzseitige Anfrage. In beiden Fällen durchlaufen Sie wahrscheinlich eine gesamte Webanwendungspipeline, treffen auf eine Datenbank und warten auf eine Antwort, während Sie auf einer wertvollen HTTP-Verbindung sitzen.
Hier ist ein Beispiel dafür, wie Ajax auf dem Server sehr schnell hässlich werden kann. Nehmen wir ein typisches "Executive Dashboard" mit 4 Steckplätzen für Widgets. Angenommen, der CEO mag einen vollständigen Verkaufsbericht auf der rechten Seite, eine Top-10-Liste der Verdiener in der Mitte und einen Aktienkursbericht des Unternehmens auf der rechten Seite. Nehmen wir an, wir werden dies über einfache Ajax-Remote-Anforderungen tun. Ohne Berücksichtigung von Stylesheets, Bildern und anderen Elementen erfordert Ihre Seite jetzt 4 HTTP-Roundtrips (Hauptseite, jeder Dashboard-Bericht) gegen den Server. Für jede dieser Funktionen ist ein vollständiger Webstack erforderlich - Sie werden Datenbanken abrufen und HTML mithilfe Ihres Webframeworks rendern, oder? Multiplizieren Sie nun den einzelnen CEO mit 2000 Remotebenutzern, von denen einige nur wenige Verbindungen haben.
Umgekehrt könnten Sie eine einzelne serverseitige Seite haben, die ein HTML-Skelett ausführt und zurückgibt, sowie die Daten (in In-Page-JSON enthalten), um die Berichte zu rendern. Einzelne, größere Verbindung, aber insgesamt weniger Probleme auf dem Webserver, da Sie nicht 4 Anfragen bearbeiten und 4 Pipelines usw. hochfahren.
Wenn Sie AJAX verwenden, um die Arbeit zu ersetzen, die der Server sonst ausführen würde, verbessert dies die Serverleistung. Möglicherweise haben Sie die Dinge jedoch so entworfen, dass der Server immer noch genauso viel tut, und jetzt ist alles, was mit AJAX passiert, zusätzlich zu dem, was der Server bereits getan hat.
Meist geht es um UI-Sachen, da Sie auf der Clientseite nichts anderes tun sollten. Grundsätzlich wird alles, was der Server zur Unterstützung der Benutzeroberfläche unternahm (z. B. das Neuladen der Seite mit einem anderen Layout als Reaktion auf Benutzereingaben), stattdessen mit JavaScript ausgeführt.
Wenn das HTML-Rendering einen großen Teil des Leistungsprofils Ihres Anwendungsservers ausmacht, kann das Verschieben des HTML-Renderings auf den Client einen Leistungsgewinn auf dem Anwendungsserver bedeuten.
Wenn das HTML-Rendering jedoch nur einen kleinen Teil des Leistungsprofils Ihres Anwendungsservers ausmacht, bedeuten mehr Anforderungen in der Regel mehr Durchläufe durch den Stapel, mehr Abfragen, mehr von allem auf dem Anwendungsserver und einen Leistungsverlust.
Die einzige Möglichkeit, dies in Ihrem speziellen Fall zu wissen, besteht natürlich darin, es auszuprobieren.
Sie müssen überlegen, wie Sie Ihre Lösung am besten implementieren können. Eine einfache nicht dynamische Form benötigt kein Ajax und das Hinzufügen kann tatsächlich die Leistung beeinträchtigen. Wenn Ihr Problem schlechte Abfragen sind, führt die gesamte Ajax-Optimierung der Welt nicht zu einer akzeptablen Leistungssteigerung.
Wenn Ihr Server überlastet ist, müssen Sie herausfinden, warum.
Wenn Sie viele Treffer erhalten, wird Ajax dieses Problem nicht beheben. Sie benötigen mehr Kapazität. Durch Hinzufügen von Ajax wird nur die Anzahl der Anforderungen erhöht, die Ihr Server verarbeiten muss.
Wenn Sie eine komplizierte Seite haben, sollten Sie prüfen, ob Sie clientseitig etwas tun können, um die Belastung Ihres Servers zu verringern. Wenn Ihre Seite dynamisch ist, aber wirklich ein begrenztes Datenpaket-Caching aufweist, kann sich die Anpassung auf der Clientseite besser auszahlen.
Und manchmal wird Ajax helfen. Wenn Sie komplexe Formulare mit dynamischen Daten haben, gewinnt Ajax den Tag. Wenn Ihre Abfragen jedoch kompliziert sind und die Ausführung lange dauert, kann Ajax Ihr Problem immer noch nicht lösen.