Ответ 1
Итак, начнем с ответа на вопрос из вашего комментария:
Я бы предпочел узнать, как загрузить данные при запуске приложения (а не через маршруты, поскольку мне не нужно его часто обновлять). Возможно ли это,
Итак, технически это по-прежнему по маршрутам, но лучший способ загрузить данные, когда приложение "запускается", осуществляется с помощью крючка модели приложения.
App.ApplicationRoute = Ember.Route.extend({
model: function({
return App.Post.find();
})
})
Маршрутизатор будет ждать обещания, возвращаемого функцией find(), чтобы вы могли убедиться, что ответ от сервера вернулся до того, как будут введены другие маршруты.
Как вы управляете кешем?
В основном вы не беспокоитесь об этом. Вы можете обновить() отдельную запись после некоторого таймаута, если необходимо.
Когда вы используете .find() и когда .all(). Используете ли вы .find(), а затем .all()? Как долго?
Зависит от того, чего вы хотите достичь. В нашем приложении мы используем find() в маршруте приложения, затем либо all(), либо filter() в других маршрутах.
Имеет ли .all() срок истечения срока действия, чтобы через какое-то время он мог сделать новый запрос?
Неа. Он никогда не сделает новый запрос
Или он использует локальное хранилище, поэтому мне нужно его вручную очистить?
Он не использует локальное хранилище, записи хранятся в памяти. Так что, конечно, F5 очистит кеш.
Предположим, что у меня есть некоторые данные, которые я хотел бы обновлять только один раз в неделю? Как мне это сделать? Теперь каждый раз, когда я вхожу или повторно посещаю тот же маршрут, создается новый запрос. Как я могу избежать этого?
Итак, давайте предположим, что вы используете find() только в маршруте приложения, и этот пользователь сохраняет браузер открытым в течение 1 недели, и записи истекли. Есть много способов обновить, что легко/лучше зависит от того, все ли они истекают сразу или если они тайм-аут по одному.
- У некоторых таймеров проверки устаревших записей и вызовов refresh() по мере необходимости.
- У вас есть модель Ping, которую вы обновляете по определенному графику. Когда сервер реагирует на обновление, он может обойти любые измененные записи.
- Или можно просто обновить браузер один раз в неделю (через window.location...)