-1

今天有个新问题(第一个:ExtJS 4.1 How to create a window with grid dynamic

因此,恢复我的应用程序是显示有关汽车的数据。我像这样加载我所有的汽车(超过 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 中使用缓存。IDK 你正在使用什么框架/CMS,Wordpress 有内置的缓存接口,可以通过插件实现。您无需对每个页面加载进行查询,而是将结果存储在 HD 中并使用它。

其次,更好地组织您的网站。与其在一个大菜单中信任其所有内容访问,不如为每个模型创建帖子、为品牌创建类别等。创建一个列出品牌的页面,链接到一个列出模型的页面等。您已经在数据库中拥有这些数据, 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 回答