如何防止Ember数据中的缓存

时间:2013-12-21 05:27:46

标签: caching ember.js ember-data

我已经使用Ember / Ember数据超过5个月了,而让我最大的悲痛的一件事是Ember Data缓存了一切。没有办法阻止它。我知道有像model.reload()这样的方法,并且查询参数的任何内容都会检索未缓存但我经常需要手动从数据存储中卸载记录。

数据通常由应用程序用户以外的用户修改。如果没有Web套接字的帮助以始终保持Ember Data同步,则需要一种简单的方法来从具有更新副本的服务器加载数据。同样,如果没有Web套接字,客户端就无法知道无效数据发生了变化。

如果有其他模型框架可以在Ember中用来帮助解决这个问题,我也会对这些框架感兴趣。

谢谢!

1 个答案:

答案 0 :(得分:2)

虽然,我根本不推荐这个,我认为缓存是最好的部分\ end rant。您可以创建一个自卸模型(只需在卸载时实现,相关记录将看到该记录消失)。

App.UnloadingModel = DS.Model.extend({
   unloadTimespan: undefined,
   _scheduledUnload: false,
   _unloadWatcher: function(){
     var time = Em.get(this.constructor,'unloadTimespan'),
         loaded = this.get('isLoaded'),
         scheduledUnload = this.get('_scheduledUnload');

     if(!scheduledUnload && time && loaded){
       this.set('_scheduledUnload', true);
       Em.run.later(this, this.unloadRecord, time);
     }
   }.observes('isLoaded').on('init')
});

App.Color = App.UnloadingModel.extend({
    color: DS.attr()
});


App.Color.reopenClass({
    unloadTimespan: 4000
});

http://emberjs.jsbin.com/OxIDiVU/70/edit