だからあなたのコメントから質問に答えることから始めます:
アプリの起動時にデータをロードする方法を知りたいです (頻繁に更新する必要がないため、ルート経由ではありません)。出来ますか
技術的にはルート経由でも問題ありませんが、アプリの「開始」時にデータをロードする最善の方法は、アプリケーション ルートのモデル フックを経由することです。
App.ApplicationRoute = Ember.Route.extend({
model: function({
return App.Post.find();
})
})
ルーターは find() によって返された promise を解決するまで待機するため、他のルートが入力される前にサーバーからの応答が返されたことを確認できます。
キャッシュをどのように制御しますか?
ほとんどの場合、それについて心配する必要はありません。必要に応じて、タイムアウト後に個々のレコードを refresh() できます。
いつ .find() を使用し、いつ .all() を使用しますか。.find() を使用してから .all() を使用しますか? どれだけの時間?
何を達成したいかによります。このアプリでは、アプリケーション ルートで find() を使用し、次に他のルートで all() または filter() を使用します。
.all() には有効期限があり、しばらくすると新しいリクエストを作成できますか?
いいえ。新しいリクエストを行うことはありません
または、ローカル ストレージを使用しているため、手動でクリアする必要がありますか?
ローカル ストレージを使用せず、レコードはメモリ内にあります。したがって、確実に F5 はキャッシュをクリアします。
週に 1 回だけ更新したいデータがあるとします。これについてどうすればよいですか?同じルートを入力または再訪問するたびに、新しいリクエストが作成されます。どうすればこれを回避できますか?
アプリケーション ルートでのみ find() を使用し、そのユーザーがブラウザを 1 週間開いたままにし、レコードの有効期限が切れたとします。更新には多くの方法があります。簡単/最善の方法は、すべてが一度に期限切れになるか、一度に 1 つずつタイムアウトするかによって異なります。
- 期限切れのレコードをタイマーでチェックし、必要に応じて refresh() を呼び出します。
- あるスケジュールで更新する Ping モデルを用意します。サーバーが更新に応答すると、変更されたレコードをサイドロードできます。
- または、週に 1 回ブラウザを更新することもできます (window.location... 経由)。