Problem: Python webapp2 + jQuery Ajax performs extrem schlecht beim Empfang von großen Textdaten-Antwort (dauert mehr als 10 Minuten in einem 1,7 MB Payload Roundtrip)
Frage: Was ist der Grund? wie man es verbessert? Könnte ich irgendwelche gut erprobten Techniken verwenden, um den großen Textstamm in kleine Nutzlasten zu teilen, um das Problem des "browserbehangenen" zu vermeiden?
Hintergrund: Ich habe Python-Web-Programmierung mit webapp2 + Google App Engine gelernt. Ich versuche, mit jQuery Ajax eine What-You-Input-Editierzone zu erstellen. Es ist dem stackoverflow-Post-Editor sehr ähnlich: wmd-input vs wmd-preview mit Live-Vorschau-Funktion. (Es zeigt "Entwurf gespeichert" als kurzen Text an. Ein weiteres Beispiel ist die Live-Bearbeitungsfunktion von Google Text & Tabellen).
Mein Beispiel funktioniert folgendermaßen: Ein jQuery-Plug-in für textchange löst Ajax-Einträge aus, die von jeder Eingabetextfläche ausgelöst werden. --- & gt; Python-Back-Ends empfangen den Text und fügen einige Nachrichten hinzu. --- & gt; Zurücksenden die text + messages --- & gt; jQuery verwendet die Serverantwort, um das Vorschau-Textfeld zu aktualisieren (Nun, senden Sie den gesamten Inhalt des empfangenen Textes ist nur für Testzwecke.)
Meine Frontend-Codes:
%Vor%Meine Backend-Codes:
%Vor%Testfall und Symptome: Lokaler Server + Nur-Text-Payloads
kopieren und fügen Sie einfachen Text kleiner als 500 KB in Eingabebereich: funktioniert wie ein Charme. ein 1.7MB Text macht jedoch Browser in & gt; 10 Minuten beschäftigt, die völlig reagieren scheint.
Vergleich: Ich füge den gleichen Text zum stackoverflow post Editor ein und die Vorschau erscheint sofort! Ich habe diesmal keine Trinkgeld-Tipps bemerkt. Und es gibt einige Javascript-Codes, die hier die Textlänge beurteilen. Gut. Es besteht die Möglichkeit, dass keine Serverkommunikation stattfindet. Aber es ist ein Workaround, keine Lösung für mein Problem. (Die Google AutoSpeicherfunktion muss einige Techniken verwenden, um das Problem zu lösen!)
Firebug xhr-Monitorergebnisse:
%Vor%Interessante Dinge:
Was passiert dahinter? Jede Hilfe wird geschätzt! Ich möchte, dass der Server nach einer Ajax-Anfrage viele Dinge an den Client "pusht", aber dieses Problem macht es unmöglich.
Erwägen Sie die Verwendung einer Kombination aus HTML5-WebSockets & amp; Worker-API zum asynchronen Senden / Empfangen von Daten vom Server, ohne die Leistung des UI-Threads zu beeinträchtigen.
Ссылка (das Tutorial geht davon aus, dass PHP der Server ist) Seitentechnologie)
Eine andere Option
a) Am mousedown
& amp; keyup
b) Am textchange
Sie müssen sehen, ob c1 > c2
, und die Teilzeichenfolge passend erhalten und umgekehrt
Auf diese Weise werden nur "Änderungen" jedes Mal an den Server gesendet - nicht der vollständige Text. Aber wenn Sie 5 MB Inhalt kopieren und einfügen, wird dies keine Verbesserung bringen. Aber für einzelne Zeichenänderungen (wie Tippen, Einfügen kleiner Segmente usw.) sollte das ziemlich gut funktionieren.
Tags und Links python jquery ajax web-applications wysiwyg