Emberを使用してリモートオブジェクトをロードおよびキャッシュする方法について質問があります。私はREST APIを介してサーバー側のストレージを使用するEmberアプリケーションを開発しています。フェッチされたデータの一部はほとんど変更されないため、アプリケーションをロードするたびにサーバーからフェッチする必要はありません。しかし、これはまた、オフラインで作業し、そのデータをサーバーに保存する必要があるアプリケーションの問題です。EmberDataを使用してローカルストレージにリモートデータをキャッシュする
Ember Dataには、REST APIを介して永続モデル用の内蔵ストレージアダプタがあり、an adapter for Local Storageもあります(下記のKenが指摘しています)。この問題は、モデルに1つのストレージアダプタしかなく、フェッチされたモデルをメモリ内に保持する以外の方法はないと思われます。
このEmber wishlistのコメントとこのtalk by Tom Daleのコメントで同様のリクエストが見つかりましたが、これはEmberの既存の機能であることを示していません。
I持っている二つの質問(重要なものである第1の1):
- 最良の方法は何ですか - 今日 - ローカルストレージにキャッシュされたモデルを実装し、必要に応じて、リモート・データとそれらを同期するには?
- これはEmberに含まれる予定の機能ですか、それとも管理者が最終的に追加する必要があるものなのでしょうか?
それが1になる)、私は戦略のカップルを考えることができます。
a)は、既存のアダプターを拡張し、カスタムリモート同期メカニズムを追加:
App.Store.registerAdapter('App.Post', DS.LSAdapter.extend({
// do stuff when stuff happens
}));
B)を維持別々のモデルクラス(リモートオブジェクト用に1セット、ローカルオブジェクト用に1セット)を作成し、必要に応じてそれらの間で同期をとります。標準藤堂ケースで:
RemoteTodo –*sync*– Todo
|
UI
私はちょっと、これは本当のnoobの質問であり、このための良い確立したパターンがあることを願っています。
更新日: Found this similar questionそれは良い答えがありますが、それは理論的なものです。私は、実用的なヒントや実装例への指針が必要だと思います。
感謝を使用している - 私は実際に目そのアダプタはEmber Dataの一部であったはずです。私はそれに応じて私の質問を更新します。LSキャッシングでRESTバックエンドを使用する良い方法を探しているので、実際には私の問題を解決することはできません。自分のデータをLSに独占的に保存しないでください。 –
同じアプリケーション内で異なるアダプタを使用することができます。選択したアダプタを特定のモデルに割り当てることができます。 – ken
それは私の質問でb)を実装する方法だろう。私はまだ最善のアプローチについて疑問に思っています。 –