Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ExtJS 4.1网格面板加载过长,条目超过10k_Extjs_Grid_Buffer_Store_Extjs4.1 - Fatal编程技术网

ExtJS 4.1网格面板加载过长,条目超过10k

ExtJS 4.1网格面板加载过长,条目超过10k,extjs,grid,buffer,store,extjs4.1,Extjs,Grid,Buffer,Store,Extjs4.1,我今天有个新问题(第一个:) 所以,恢复我的应用程序就是显示关于汽车的数据。我将所有车辆(超过10公里)装载如下: Ext.create('Ext.data.Store', { storeId: 'CarStore', model: 'Car_Model', proxy: { type: 'ajax', url: './cars.json', reader: 'json' }, autoLoad: {

我今天有个新问题(第一个:)

所以,恢复我的应用程序就是显示关于汽车的数据。我将所有车辆(超过10公里)装载如下:

Ext.create('Ext.data.Store', {
    storeId: 'CarStore',
    model: 'Car_Model',
    proxy: {
        type: 'ajax',
        url: './cars.json',
        reader: 'json'
    },
    autoLoad: {
        callback: displayMenu
    }
});
My
displayMenu
功能显示带有如下按钮的菜单:

- Brand1
    - Model1
    - Model2
- Brand2
    -Model1
- Etc
- All Cars
因此,当我创建按钮时(取决于json商店中的品牌/型号),我会这样做(例如,模型按钮):

因此,当我点击一个按钮,在窗口的网格中显示一个品牌/型号的所有汽车时

我的问题是,在显示我的数据之前加载一个型号大约需要5秒钟,一个品牌大约需要10秒钟,而我所有的车都需要2分钟

PS:我使用相同的存储来创建按钮和显示所有网格,但带有一个过滤器(按品牌、型号或无),如您在
grid.filterByModel(myModelText)中看到的那样

在我之前的回答中,VoidMain建议我使用
缓冲:true
,但当我单击按钮时会产生错误。

如果分页或缓冲绝对不是选项,您可以尝试增加超时设置:

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
    }
});

您正在创建带有子菜单的菜单,对吗

1) 不要在此菜单上添加所有品牌的所有型号。这是10K元素,伙计,没有人会浏览整个菜单!!更糟糕的是,如果访问者正在搜索特定的车型。。。。。。。。。。(想象一下,在这样的大菜单上找到它需要多少时间!)

好的,解决办法

首先,在PHP中使用缓存。IDK您正在使用的框架/CMS,Wordpress有内置的缓存接口,可以通过插件实现。您将结果存储在HD中并使用它,而不是对每个页面加载进行查询


第二,更好地组织你的网站。不要在一个大菜单中信任其所有内容访问,而是为每个模型创建帖子,为品牌创建类别等。制作一个列出品牌的页面,链接到一个列出模型的页面等。如果数据库中已经有这些数据,PHP可以构建动态HTML来列出它们,使用CSS,您可以使这些列表非常漂亮。

您想在浏览器中加载10k记录吗?祝你好运,要么使用分页,要么使用缓冲。是的,我知道这很疯狂,但我不知道如何使用缓冲模式。4.1中的缓冲网格在我看来还是有点问题,我个人使用分页。但是如果您想使用缓冲网格,那么这是一个很好的起点:查看文件内部,看看它们是如何做到的。记住,你的存储将调用你的后端,比如分页(发送start en limit参数)。如果你除了下载你的完整数据集(你的12K记录)之外没有其他选择,那么你必须手动管理分页或缓冲,但这并不复杂,你可以使用自定义内存代理来完成,如果您需要代理的帮助,请告诉我。
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
    }
});