Ember を使用したリモート オブジェクトの読み込みとキャッシュについて質問があります。REST API を介してサーバー側ストレージを使用する Ember アプリを開発しています。フェッチされたデータの一部はめったに変更されないため、アプリケーションがロードされるたびにサーバーからフェッチする必要はありません。しかし、これは、オフラインで作業し、データをサーバーに保存する必要があるアプリにとっても問題です。
Ember Data には、REST API を介してモデルを永続化するための組み込みのストレージ アダプターがあり、ローカル ストレージ用のアダプターもあります (以下の Ken が指摘したように)。問題 (問題がある場合) は、モデルにストレージ アダプターが 1 つしかなく、取得したモデルをメモリに保持する以外にキャッシュするという概念がないように思われることです。
このEmber ウィッシュリストとTom Dale によるこのトークへのコメントで同様のリクエストを見つけましたが、これが Ember の既存の機能であるという兆候は見つかりませんでした。
2 つの質問があります (最初の質問が重要です)。
- 現在、キャッシュされたモデルをローカル ストレージに実装し、必要に応じてリモート データと同期するための最良の方法は何ですか?
- これは Ember に含まれる予定の機能ですか、それともメンテナーが最終的に追加する必要があると感じている機能ですか?
1) に関しては、いくつかの戦略を考えることができます。
a) 既存のアダプターを拡張し、カスタムのリモート同期メカニズムを追加します。
App.Store.registerAdapter('App.Post', DS.LSAdapter.extend({
// do stuff when stuff happens
}));
b) 個別のモデル クラス (リモート オブジェクト用に 1 セット、ローカル オブジェクト用に 1 セット) を維持し、必要に応じてそれらを同期します。標準の Todo ケースの場合:
RemoteTodo –*sync*– Todo
|
UI
これが本当の初心者の質問であり、これには確立された適切なパターンがあることを願っています。
更新:この類似の質問が見つかりました。良い答えがありますが、それは一種の理論的なものです。私が必要とするのは、実践的なヒントや実装例へのポインタだと思います。