繁体   English   中英

从灰烬存储中卸载大量记录(100,000+)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM