gpt4 book ai didi

ember.js - Ember-Data .find() vs .all() - 如何控制缓存?

转载 作者:行者123 更新时间:2023-12-03 12:14:45 25 4
gpt4 key购买 nike

I was told为了不一直发出请求,可以使用 .all() 方法加载保存在存储中的数据。但是 Ember 是如何处理缓存的呢?我有一些问题。

你如何控制缓存?什么时候使用 .find() 以及什么时候使用 .all()。你使用 .find() 然后 .all() 吗?多长时间?

.all() 是否有一些到期日期,以便在一段时间后它可以发出新请求?或者它使用本地存储,所以我必须手动清除它?

假设我有一些数据只想每周刷新一次?我该怎么办?现在,每次我进入或重新访问同一条路线时,都会发出一个新请求。我怎样才能避免这种情况?

最佳答案

因此,将从您的评论中回答问题开始:

I'd rather to know how can I load data when an app starts (not via routes as I don't have to update it so often). Is it possible



所以从技术上讲,这仍然是通过路由,但是当应用程序“启动”时加载数据的最佳方式是通过 Application Route 的模型 Hook 。
App.ApplicationRoute = Ember.Route.extend({
model: function({
return App.Post.find();
})
})

路由器将等待 find() 返回的 promise 解决,因此您可以确保在输入任何其他路由之前来自服务器的响应已经返回。

How do you control cache?



大多数情况下,您不必担心。如果需要,您可以在超时后刷新()单个记录。

When do you use .find() and when .all(). Do you use .find() and then .all()? For how long?



取决于你想达到什么。在我们的应用程序中,我们在应用程序路由中使用 find(),然后在其他路由中使用 all() 或 filter()。

Does .all() have some expiration date so that after some time it can make a new request?



没有。它永远不会提出新的请求

Or it uses Local Storage so that I have to clear it manually?



它不使用本地存储,记录在内存中。所以F5肯定会清除缓存。

Suppose that I have some data I'd like to refresh only once a week? How should I go about this? Now every time I enter or re-visit the same route a new request is made. How can I avoid this?



所以好吧,假设您仅在应用程序路由中使用 find(),并且该用户保持浏览器打开 1 周并且记录已过期。有很多方法可以刷新,最简单/最好的方法取决于它们是同时过期还是一次超时。
  • 有一些计时器检查过期记录并根据需要调用 refresh()。
  • 有一个按计划更新的 Ping 模型。当服务器响应更新时,它可以旁加载任何更改的记录。
  • 或者可以每周刷新一次浏览器(通过 window.location...)
  • 关于ember.js - Ember-Data .find() vs .all() - 如何控制缓存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16536925/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com