拡張angular-cacheを確認することをお勧めします。
ドキュメントで説明されているとおり: http://jmdobry.github.io/angular-cache/guide.html#using-angular-cache-with-localStorage
app.service('myService', function ($angularCacheFactory) {
// This cache will sync itself with localStorage if it exists, otherwise it won't. Every time the
// browser loads this app, this cache will attempt to initialize itself with any data it had
// already saved to localStorage (or sessionStorage if you used that).
var myAwesomeCache = $angularCacheFactory('myAwesomeCache', {
maxAge: 900000, // Items added to this cache expire after 15 minutes.
cacheFlushInterval: 3600000, // This cache will clear itself every hour.
deleteOnExpire: 'aggressive', // Items will be deleted from this cache right when they expire.
storageMode: 'localStorage' // This cache will sync itself with `localStorage`.
});
});
または、カスタム Local storage 実装を挿入できます
storageImpl: localStoragePolyfill // angular-cache will use this polyfill instead of looking for localStorage
完全な API を提供しながら、非常に使いやすいプラグインhttps://github.com/grevory/angular-local-storageを使用しています。
テンプレートをキャッシュするためのローカル ストレージの使用状況も確認してください: angularjs パーシャルをキャッシュする方法は?
注: この記事Power up Angular's $http service with caching、およびほとんどのセクション:
Advanced cachingは、私にとってangular-cacheに移行する理由でした
カスタム Polyfill を作成する方法は? (アダプターパターン)
ここに記載されているように、このインターフェースを実装するlocalStoragePolyfillを渡す必要があります。
interface Storage {
readonly attribute unsigned long length;
DOMString? key(unsigned long index);
getter DOMString getItem(DOMString key);
setter creator void setItem(DOMString key, DOMString value);
deleter void removeItem(DOMString key);
void clear();
};
angular-cache は、次の 3 つの方法のみを考慮します。
- setItem
- getItem
- removeItem
つまり、ローカル ストレージ API と対話するラッパーを実装し、それを高度なキャッシュ API に変換します。それでおしまい。他に何もない