2012-12-29 23 views
8

大きなデータセットに起因する問題の解決策を探して、Emberがデータを処理しようとしている間にブラウザをロックさせる。大きいデータセットに遭遇したときにEmberが窒息する

ページングのために、私はバックエンドAPIからロードされる約13,000以上のオブジェクトをページ付けするのにtchakの便利なpagination mixinを使用しています。

Ember Dataオブジェクトには、ID、1つのテキスト属性、および複数の数値属性が含まれています。

ブラウザがデータの処理を完了するまでに1分ほどかかり、その間にブラウザを使用できなくなるという問題があります。 Firefoxは、スクリプトがすべてのブラウザリソースを使い切っているという警告を出すだけでなく、スクリプトが終了するよう提案しています。

オブジェクトを範囲、つまりアイテム10-25でリクエストする独自のページ分割ミックスを作成しました。これは1つの重大な制限を除いて一般的にはうまく機能します。データをソートするには、バックエンドに追加のリクエストを行い、オブジェクトの一部がすでにロードされていてもオブジェクトをリロードする必要があります。

私はバックエンドAPIへの追加のリクエストをせずに並べ替えのプロセスを簡素化するために、すべてのコンテンツを先に読み込むことができたいと考えています。私はこの問題に取り組む方法についてのガイダンスを探していますが、私は完全に別のアプローチに挑戦しています。

それ以外の場合は、13kのすべてのオブジェクトをArrayControllerにロードしようとすると、Emberがブラウザに配置するリソースのフットプリントを減らすことは可能ですか?


私はEmber 1.0.0-pre2を最新のEmber Data(現在リビジョン10)に使用しています。

バックエンドでは、Rails 3.2.8です。


更新私はcontent以外のArrayControllerプロパティにデータをロードすることによって、問題をsidestepped。これにより、ロード時間が1分から数秒に短縮されました。次に、要求された数のアイテムをスライスし、コンテンツにロードします。これは、データを簡単に並べ替えることができないという犠牲を払って、任意の数の項目に対してうまく機能します。

+0

解決策に関するいくつかのコードを教えてください。 私は同じ問題に直面しており、大きな助けになるでしょう。これについては –

答えて

5

Ember Tableをご覧ください。このデモでは500,000レコードのテーブルが表示され、非常に高速に動作します。ソースコードを掘り下げることは役に立ちます。

+1

+1です。問題は、一度にすべてをレンダリングしようとしている可能性が最も高いです。 – nicholaides

+0

私は15-20のアイテムしかレンダリングしませんでしたが、上記の私のアップデートが表示されている場合は、ArrayControllerがどのようにコンテンツを処理するかに関係しているようです。 – Marco

0

並べ替えを処理するビューをDBから照会できませんか?クエリ文字列のソート条件を渡しますか?sortBy = name & sortAsc = true

+0

そして、私は自分の質問に答えて、ある範囲のデータを得ることにしました。 1か月または会計四半期に言ってください –

関連する問題