-1

今日、新しい問題が発生しました(最初の問題:ExtJS 4.1グリッドを使用してウィンドウを動的に作成する方法

したがって、アプリケーションを再開することは、車に関するデータを表示することです。私はこのようにすべての車(10k以上)をロードします:

Ext.create('Ext.data.Store', {
    storeId: 'CarStore',
    model: 'Car_Model',
    proxy: {
        type: 'ajax',
        url: './cars.json',
        reader: 'json'
    },
    autoLoad: {
        callback: displayMenu
    }
});

私のdisplayMenu関数は次のようなボタンでメニューを表示します:

- Brand1
    - Model1
    - Model2
- Brand2
    -Model1
- Etc
- All Cars

したがって、ボタンを作成するとき(jsonストアのブランド/モデルによって異なります)、これを行います(モデルボタンの例):

var CarStore = Ext.data.StoreManager.lookup('CarStore');
var aCarButton= Ext.create('Ext.Button', {
    text: myModelText,
    handler: function(button, e) {
        var grid = Ext.create("CarsGrid", { store: CarStore });
        grid.filterByModel(myModelText);
        var win = Ext.create("CarsWindow", { title: myModelText, items: [ grid ] });
        win.show();
    }
});
aMenuPanel.add(aAircraftButton);

したがって、ウィンドウ内のグリッドにブランド/モデルのすべての車を表示するボタンをクリックすると、

私の問題は、データを表示する前の読み込みに、モデルで約5秒、ブランドで10秒、すべての車で2分かかることです。

PS:ボタンの作成とすべてのグリッドの表示に同じストアを使用していますがgrid.filterByModel(myModelText);
、以前の回答で見たようなフィルター(ブランド、モデル、またはなし)を使用していますVoidMainは使用するようにアドバイスしましたbuffered: trueが、クリックするとエラーが発生しますボタン。

4

2 に答える 2

0

サブメニューを含むメニューを作成していますよね?

1) このメニューにすべてのブランドのすべてのモデルを追加しないでください。それは 10K の要素です、誰もそのメニュー全体をブラウジングしません!! さらに悪いことに、訪問者が特定の車のモデルを検索している場合.... (そのような大きなメニューでそれを見つけるのにどれだけの時間がかかるか想像してみてください!)。

わかりました、解決策。

まず、PHP でキャッシュを使用します。使用しているフレームワーク/CMSのIDK、Wordpressには、プラグインで実装できる組み込みのキャッシュインターフェイスがあります。ページロードごとにクエリを作成する代わりに、結果を HD に保存して使用します。

次に、サイトの構成を改善します。単一の大きなメニューですべてのコンテンツ アクセスを信頼する代わりに、各モデル、ブランドのカテゴリなどの投稿を作成します。ブランドを一覧表示するページを作成し、モデルを一覧表示するページにリンクするなどします。このデータは既に DB にあり、 PHP は動的な HTML を作成してそれらをリストすることができ、CSS を使用すると、それらのリストを非常に美しくすることができます。

于 2013-01-08T16:08:36.977 に答える
0

ページングまたはバッファリングが絶対に不可能な場合は、タイムアウト設定を上げてみてください。

Ext.create('Ext.data.Store', {
    storeId: 'CarStore',
    model: 'Car_Model',
    proxy: {
        type: 'ajax',
        url: './cars.json',
        reader: 'json',
        timeout: 180000 //3 minutes * 60 sec/min * 1000 millis/sec
    },
    autoLoad: {
        callback: displayMenu
    }
});
于 2012-12-27T20:51:51.787 に答える