wry*_*ych 20 ember.js ember-data
有人告诉我,为了不一直提出请求,可以使用.all()方法加载存储在商店中的数据.但是Ember如何处理缓存?我有一些问题.
你如何控制缓存?什么时候使用.find()和.all().你使用.find()然后.all()吗?多长时间?
.all()是否有一些到期日期,以便在一段时间后它可以发出新的请求?或者它使用本地存储,以便我必须手动清除它?
假设我有一些数据,我想每周只刷一次?我该怎么办呢?现在,每次我进入或重新访问同一路线时,都会发出新请求.我怎么能避免这个?
Mik*_*tti 21
因此,首先回答您的评论中的问题:
我想知道如何在应用程序启动时加载数据(不是通过路由,因为我不必经常更新它).可能吗
所以在技术上这仍然是通过路由,但是当应用程序"启动"时加载数据的最佳方法是通过Application Route的模型钩子.
App.ApplicationRoute = Ember.Route.extend({
model: function({
return App.Post.find();
})
})
Run Code Online (Sandbox Code Playgroud)
路由器将等待find()返回的promise以解析,因此您可以确保在输入任何其他路由之前服务器的响应已经返回.
你如何控制缓存?
大多数情况下你不担心它.如果需要,您可以在一些超时后刷新()单个记录.
什么时候使用.find()和.all().你使用.find()然后.all()吗?多长时间?
取决于你想要达到的目标.在我们的应用程序中,我们在应用程序路由中使用find(),然后在其他路由中使用all()或filter().
.all()是否有一些到期日期,以便在一段时间后它可以发出新的请求?
不.它永远不会提出新的要求
或者它使用本地存储,以便我必须手动清除它?
它不使用本地存储,记录在内存中.所以肯定F5会清除缓存.
假设我有一些数据,我想每周只刷一次?我该怎么办呢?现在,每次我进入或重新访问同一路线时,都会发出新请求.我怎么能避免这个?
所以好吧我们假设您只在应用程序路由中使用find(),并且该用户使浏览器保持打开状态1周并且记录已过期.有很多方法可以刷新,什么是容易/最好的取决于它们是否一次过期或者它们是否一次超时.
| 归档时间: |
|
| 查看次数: |
10402 次 |
| 最近记录: |