[英]Unloading a large amount (100,000+) of records from the ember store
我通过将JSON对象传递给存储的createRecord
方法而创建的ember存储中有大量特定类型的模型,这里大约有100,000条或更多记录。 当我尝试使用store.unloadAll('record-type')
卸载所有这些记录时,记录最终最终都会全部从存储中完全卸载,但是该操作大约需要90秒才能完成。
更让我感到困惑的是, unloadAll
方法会立即返回并且不会返回promise,但Web GUI将会冻结,并且使用余烬检查器,我可以看到所有记录仍然存在,直到大约90秒钟之后它们终于消失。
我从如下操作中调用unloadAll
方法:
actions: {
unloadStore() {
console.log('calling unloadAll');
this.get('store').unloadAll('record-type');
console.log('unloadAll returns immediately');
}
}
我正在创建这些模型,如下所示:
for(let obj of data.response){
store.createRecord('record-type', {
'id': obj._id.$oid,
'prop1': obj.prop1,
'prop2': obj.prop2,
'prop3': obj.prop3
});
}
预计卸载此数量的记录需要80秒钟以上,还是我做错了什么? 我已经通过Chrome的性能分析器注意到,ember.debug.js文件的removeObject
方法花费了大量时间。 我认为它是与通过改变在记录阵列触发arrayContentWillChange和其他此类事件的重复射击unloadAll
的执行。 性能配置文件的屏幕快照在此处链接。
我有同样的问题,这对我有用:
// route.js
actions: {
reloadModel() {
this.store.peekAll('my-model').forEach((r) => {
this.store.unloadRecord(r);
})
this.refresh(); // to force a fresh load of data from API
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.