0


私は dojo 1.8.3 ライブラリで gridx を使用しています。
私のアプリケーションでは、Dojo グリッドをサーバーからのデータで毎秒更新する必要があります。
以下は、更新ごとに新しいストアを作成してグリッドを更新するコードです。結果は xhrPost コールバックに送られ、新しいグリッド ストアに割り当てられます。

refreshGrid(){
   if(grid.store!=null)
     grid.store.close();
   var newGridStore = new dojo.data.ItemFileWriteStore({
                url:'',
                data:result,
                urlPreventCache: false
            });
   grid.setStore(newGridStore);
 }

上記の関数は 2 秒ごとに呼び出され、クロム プロファイルのメモリが増加することがわかりました。
ストアを反復処理してすべてのアイテムを削除してから新しいアイテムを追加しようとしましたが、ストアが更新されるとグリッドがロックされます。
Dojoでグリッドをリフレッシュする正しい方法はどれですか?

4

1 に答える 1

1

Nothing you are doing looks sketchy, set store is the way to go unless you are refreshing specific items. The old store should eventually be deleted by the gc, but it does this delete whenever it feels like it and you will see a ramp up in memory usage until that point. In chrome you can force the garbage collector, so if you do this and your memory clears up then everything is running as intended and you may just be dealing with too much data too often.

It might also be useful to let us know what kind of performance decrease (if any) you are seeing, what your memory usage is ranging from, and what amount of data you are dealing with in your store.

于 2013-07-03T07:05:42.533 に答える