Erstickt bei großen Datensätzen

8

Auf der Suche nach einer Lösung für ein Problem, das durch große Datenmengen verursacht wird, die Ember zwingen, den Browser zu sperren, während er versucht, die Daten zu verarbeiten.

Für die Paginierung verwende ich tchaks praktischen Paginierungs-Mix , um ungefähr 13.000+ Objekte zu paginieren, die von einer Backend-API geladen werden.

Die Ember Data-Objekte enthalten eine ID, ein Textattribut und mehrere Zahlenattribute.

Das Problem ist, dass es fast eine Minute dauert, bis der Browser mit der Verarbeitung der Daten fertig ist, wodurch der Browser in der Zwischenzeit unbrauchbar wird. Firefox geht sogar so weit, dass es eine Warnung ausgibt, dass ein Skript alle Browser-Ressourcen verbraucht, und schlägt vor, dass das Skript beendet wird.

Ich habe meinen eigenen Seitenwechsel-Mix geschrieben, der Objekte nach Bereich anfordert, d. h. Punkte 10-25, und er funktioniert im Allgemeinen gut, abgesehen von einer ernsthaften Einschränkung: Sortieren. Um die Daten zu sortieren, muss ich zusätzliche Anforderungen an das Backend stellen und die Objekte neu laden, selbst wenn einige von ihnen bereits geladen wurden.

Ich würde gerne den gesamten Inhalt im Voraus laden können, um den Sortiervorgang zu vereinfachen, ohne zusätzliche Anforderungen an die Back-End-API zu stellen. Ich suche nach einer Anleitung, wie ich dieses Problem angehen kann, aber ich bin offen für einen völlig alternativen Ansatz.

Wenn nichts anderes möglich ist, ist es möglich, den Ressourcen-Fußabdruck zu reduzieren, den Ember auf den Browser legt, während er versucht, alle 13k-Objekte in den ArrayController zu laden?

Ich verwende Ember 1.0.0-pre2 mit den neuesten Ember-Daten (derzeit in Revision 10).

Im Backend ist Rails 3.2.8.

Aktualisieren Ich habe das Problem umgangen, indem ich Daten in eine andere ArrayController-Eigenschaft als content geladen habe. Dies hat die Ladezeiten von über einer Minute auf nur wenige Sekunden reduziert. Ich schneide dann die angeforderte Anzahl von Elementen und lade diese in den Inhalt. Dies funktioniert gut für eine beliebige Anzahl von Elementen, wobei die Daten nicht leicht sortiert werden können.

    
Marco 29.12.2012, 00:48
quelle

2 Antworten

5

Ich schlage vor, dass Sie sich Ember Table ansehen. Die Demo zeigt eine Tabelle mit 500 000 Datensätzen und arbeitet sehr schnell. Das Durchsuchen des Quellcodes könnte helfen.

    
Jakub Arnold 29.12.2012, 19:24
quelle
0

Können Sie eine Sicht von Ihrer Datenbank, die die Sortierung behandelt, nicht abfragen? Übergeben Sie die Sortierbedingungen in der Abfragezeichenfolge? SortBy = name & amp; sortAsc = true

    
phil v 26.04.2013 13:38
quelle

Tags und Links