Wie optimiert man die ajax-Anfragen in Jquery?
Baue ich eine mobile-app mit jquery mobile, jquery und php-back-end.
Mein problem ist, das in bestimmten Seiten bin ich senden und empfangen mehrere ajax-Anfragen, die sichtlich verlangsamt die Leistung und Ursachen von Speicherlecks führt zum Absturz der app bei niedrigen Netzwerk-verbindungen
Was sind die möglichen Wege der Optimierung des ajax-requests?
beachten:- ich verschicke einige ajax-requests in regelmäßigen Abständen(wie einmal in einer Sekunde)
Einige ajax gesendet werden, die basierend auf Ereignissen
- Können Sie bitte poste dein Code hier?
- Seine ganz großen Kumpel, ich bin gerade auf der Suche nach Allgemeinen Richtlinien und Ideen
- "wie einst in einer zweiten," Das ist eine Menge. Brauchen Sie, um Abfragen, die sich Häufig? Wenn Sie verlangen mehr und mehr ohne Abschluss, der browser drosseln Ihre Anfragen, vielleicht resultierend in einer Zunahme von Anforderungen in der Warteschlange. Möchten Sie vielleicht, um zu überprüfen, dass der code für memory leaks. Auch, vielleicht schauen Sie in der Verwendung von web-sockets, wenn Sie brauchen, um zu aktualisieren, so schnell.
- Es ist eine soziale app, die eigentlich so selbstverständlich müssen Sie die Informationen aus der partner in regelmäßigen Abständen, das ist, warum wir senden, die häufige Anfragen, auch das Projekt ist fast abgeschlossen und ich bin einfach nur Fehler beheben, die wir nicht ändern können, die Arbeits-Frameworks oder Technologien (wie websocket) verwendet, also nur auf der Suche nach Abhilfe-Maßnahmen
- Long-polling Ihrem server wie die, die am Ende kann zu Problemen führen und einen erheblichen Mehraufwand bedeutet. Sie sollten mithilfe der NodeJS und socket.io zu behandeln die übertragung von Ereignissen und Daten, und verwenden Sie PHP, um zu helfen initialisieren der UI. Dies wird zumindest ähneln Echtzeit-Interaktionen ein wenig besser, und lassen Anfasser der Herzschlag auf seine eigenen.
- Wenn Ihre Anwendung die Use-case ist in Echtzeit, als zu versuchen meteor-framework. Es hat eingebaute Unterstützung für cordova-und die Entwicklung ist relativ schnell.
Du musst angemeldet sein, um einen Kommentar abzugeben.
First off, richtig geschrieben Ajax-code nicht Speicherverlust. Also, wenn Sie tatsächlich ein Leck, das ist wahrscheinlich verursacht durch falsch geschriebene code, nicht durch den Einsatz von Ajax.
Dann gibt es eine Reihe von Optimierungen, die Sie betrachten können.
Kombinieren Sie mehrere Anforderungen an den server in einer größeren Anfrage. Das spart roundtrips zum server, Bandbreite spart, spart Akku und erhöht die Leistung.
Nicht Umfrage jeder zweite. Schlauer darüber, wie oft Sie die Umfrage Ihren server.
Verlängern die polling-Intervall zu variieren, basierend auf die zu erwartenden Aktivität, wechseln Sie zu "long-polling", oder wechseln Sie zu einem webSocket-so kann man server-push ohne polling.
Analysieren, was die Ursache für eine zu hohe Speicherauslastung und die Fehler beheben oder neu gestalten zu beschneiden, dass. Es gibt keinen Grund dafür, dass viele Ajax-Aufrufe zu "Leck" - Speicher. Es wird kauen Lebensdauer der Batterie, müssen aber nicht Speicherverlust, wenn richtig codiert.
Oh, und zögern Sie nicht, um nach oben ziehen einige hohe Skala social-web-apps, die bereits vorhanden sind, öffnen Sie den debugger, wechseln Sie auf die Registerkarte Netzwerk, und studieren das heck aus, was Sie tun. Sie können auch lernen, von hochskalierte apps, die bereits über dieses Problem gelöst.
Lange Polling Ist Besser Als Polling
Wenn Sie die Umfrage in einem festgelegten Intervall ist es wahrscheinlich besser, wenn Sie eine Zeitüberschreitung auf server-Seite und warten auf die Rückgabe einer Meldung, bis eine bestimmte Anzahl von loops. Dies macht vor allem Sinn für SPA.
Allerdings, wenn Sie Umfrage, sollten Sie erhöhen Sie die Zeit-intervall mit jedem leere Antwort, die Sie erhalten.
Gruppe Von Anfragen, Die Durch Ereignisse, Nicht Durch Entity -
Let ' s sagen Sie poll alle 10 Sekunden zum abrufen neuer Nachrichten. Außerdem sind Sie poll alle 10 Sekunden zum abrufen von Benachrichtigungen mehr. Anstatt das zu tun, zwei Anfragen sollten Sie nur tun, eine ajax-Anfrage und geben einen großen json-Antwort, die Sie dann zum ändern von DOM-Elementen auf der client-Seite.
Verwenden Sie Server-Sent Events Oder Steckdosen, Wenn Möglich
Sockets oder Server-Sent Events wird das Ergebnis in viel weniger Anfragen und nur Sie Benachrichtigen, wenn tatsächlich etwas passiert ist, auf der server-Seite. Hier ist eine gute Vergleich.
Hier sind einige Dinge, die Sie tun können,
Erstens
Dann
Reduzieren die Anzahl der Anfragen. Sorgfältig Forschung über die besten Schwellenwerte in Ihrer Anwendung und nur auslösen, Ihre Anfragen zu Abschlussarbeiten. Versuchen Sie batch Ihre Wünsche und setzen Sie Sie in einer einzelnen Anforderung, Wann immer möglich.
Verwenden Sie die GET-Anfragen, Wann immer möglich. Sie sind vergleichsweise einfach und würde schnell handeln. Dieser Schritt ist wichtig für eine Anwendung, die Trigger eine Menge von Anforderungen in seinem Betrieb.
Wählen Sie das Datenformat gezielt. Es könnte sein, plain text, JSON oder
XML. Herauszufinden, die eine, die die geringsten Auswirkungen auf Ihre
Anwendung und wechseln Sie in das entsprechend. Konfigurieren Sie Ihren server
Datenkomprimierung verwenden, wenn möglich.
Server optimieren. Verwenden Sie die richtigen
Expire
oderCache-Control
Headerfür die Inhalte von Servern. Verwenden
ETags
wenn möglich.Versuchen Sie Ihre Inhalte über ein CDN. Diese können die Ressourcen in einer
geografisch näher Lage, um die Benutzer und machen Sie Ihre Anwendung schneller arbeiten.
Auch, Wenn Sie wollen, um einen chat-server, oder senden Sie schnell Nachrichten an den server, den Sie verwenden sollten, wie webSockets socket.io .
Gibt es hauptsächlich 3 Schritte zur Optimierung (Minimierung) jQuery AJAX Aufrufe:
Entnehmen Sie bitte diesem link : Wie zu optimieren (minimieren), jQuery AJAX-Aufrufe
Können Sie die cache-Funktion des Ajax-call für dieses hilft Ihnen, um alle Daten in der ersten während der Anfrage und im cache gespeichert und ab dem nächsten mal kein Ajax-request passiert und Datenbearbeitung erfolgt unter Verwendung von zwischengespeicherten Daten nur.
Können, können Sie auch nur die Optimierung der Ajax-call request-und response-Zeit, indem die Menge der Daten angefordert und gesendet, während Ajax-Aufruf. Dies kann nur durch das entfernen unerwünschter Daten während Ajax-Aufruf.
Andere als die, die sich alle der Optimierung hängt davon ab, code-und Datenbank-Logik. Um die Leistung zu erhöhen und verringern die app abstürzt, optimierte code-und Datenbank-Logik hilft Ihnen.
Speicher bis getan callback ausgeführt wird.Eine bessere Möglichkeit ist das erstellen neuer ajax
Anfrage auf frühere ajax-vollständig, das heißt, Sie haben nur eine
xhr request-Instanz auf Zeit.
Nach dem senden von Daten zum server, reinigen Ihre Objekt-Daten, zum Beispiel:
array.length = 0;
Objekt = null;
Bild.src = "";
Datei = null;
Als @jfriend00 sagte, Ajax-Anfragen nicht generieren Speicherlecks Fragen...
dies ist, was Ihr code wahrscheinlich tun!
Der beste Weg, das zu tun, was Sie brauchen, ist zum öffnen einer Socket-Layer mit Ihren Daten Schicht-Dienst, also, statt eines polling, können Sie benachrichtigt werden, wenn ein domain-Modell änderung Eintritt.
Kasse bei Socket.io...
Wenn Sie nicht möchten, implementieren Sie eine Socket-Layer, ich glaube, es gibt nicht viele Weg zur Erhöhung der Leistungen...
Einer Sache, die neben - natürlich - der code-Verbesserungen (refactoring, ecc.), meiner Meinung nach, die Sie tun können, ist die Umsetzung einer "Tail-Management-System"...