web-dev-qa-db-ja.com

ローカルストレージとAngularJS $ cacheFactory

多くのクライアント側のデータを保存するのに問題があり、どちらの方法が良いかを判断できません。現在、AngularJSのcacheFactoryを使用していますが、正常に動作しますが、すべてのデータは新しいセッションでリロードされます。代わりにローカルストレージを使用する価値はありますか?

58
Rasalom

クライアント側の永続データを保存することが目的の場合、現在のセッションのデータをキャッシュするだけの $ cacheFactory は使用できません。

1つの解決策は、新しいローカルストレージAPIを使用することです。 この素晴らしいAngularモジュール はすべての汚い仕事をし、さらに古いブラウザーのcookieにフォールバックします!

83
Blackhole

代替ソリューションは http://jmdobry.github.io/angular-cache/ です。これはngResourceと連携して動作し、localStorageに同期するように簡単に構成できるため、リクエストを再実行する必要がありません-ページの更新後に完了。

$resource('my/kewl/url/:key', { key: '@key' }, {
  'get': { method: 'GET', 
           cache: $angularCacheFactory('MyKewlResourceCache', { 
                                          storageMode: 'localStorage' })
         }
});
21
tmaximini

Blackholeが言ったように、セッションが期限切れになるたびにキャッシュがクリアされるため、$ cacheFactoryは明らかにあなたのソリューションではないようです。 $ cacheFactoryはAngular方法でのmemcache実装です。

angular-cacheは単なるヘルパーAPIであり、基本的に$ cacheFactoryにオプションを追加します。このオプションの1つは、キャッシュを永続ストレージ(localStorageなど)に保存することです。

したがって、永続ストレージにデータを保存する場合は、 angular-local-storage のような利用可能なモジュールのいずれかを使用するか、または $ cookieStore を使用しますが、Cookieを作成します。 。

1
Gut

仕事をする別のangularモジュール: https://github.com/jmdobry/angular-cache

0
hugsbrugs