Sencha Touch 2,来自远程代理的每个商店负载的CPU使用率增加

时间:2013-08-18 12:57:33

标签: javascript extjs sencha-touch

所以我的应用程序启动非常快,并开始放慢每个商店的负载。

商店模型:

Ext.define('SkSe.model.Places',{
    extend:'Ext.data.Model',
    config:{
        fields:['id','name','icon_code','required_stamps', 'active_stamps','description', 'campaign_id', 'user_favorites' , 'live_action_number']
    }

});

商店本身看起来像这样:

Ext.define('SkSe.store.Places',{
extend:'Ext.data.Store',

config:{

    autoLoad:true,
    autoSync:true, 
    model:'SkSe.model.Places',
    sorters: 'name',
    grouper: {
        groupFn: function (item) {
            return item.get('name')[0];
        }
    }, 
    groupDir: 'DESC',
    proxy:{
        type:'ajax',
        url:'SOMEURL'
    }

}
}

);

每次用户进入主视图时,商店都会被清空并加载:

var store2 = Ext.data.StoreManager.lookup('Places');
store2.data.clear();
store2.getProxy().setUrl('someurl');
store2.load();

出于某种原因,每次用户返回主视图时,cpu负载会增加几个百分点,直到它变得非常缓慢。

它必须与存储加载和清除有关,因为如果我删除它就不会发生CPU过载。

此外,通过代理到达的数据量可以忽略不计。

为什么会发生这种情况的任何想法?

感谢。

1 个答案:

答案 0 :(得分:0)

我不认为通过清除商店的底层Collection会破坏记录。我建议使用商店的removeAll方法,它会对每条记录进行销毁,并希望释放每个记录所使用的一些资源。

如果您的商店正在处理大型数据集,那么这可能会加起来并导致速度减慢。