我有一个存储大量客户端数据的问题,但是我无法决定哪种方式更好。现在我正在使用 AngularJS 的 cacheFactory,它能正常工作,但所有数据都会在新的会话中重新加载。是否值得改用本地存储?
我有一个存储大量客户端数据的问题,但是我无法决定哪种方式更好。现在我正在使用 AngularJS 的 cacheFactory,它能正常工作,但所有数据都会在新的会话中重新加载。是否值得改用本地存储?
如果你的目标是存储客户端和持久数据,那么不能使用 $cacheFactory,因为它只会缓存当前会话中的数据。
一个解决方案是使用新的本地存储API。 这个很棒的Angular模块可以为你完成所有繁琐的工作,甚至可以为旧版浏览器回退到Cookies!
另一种解决方案是http://jmdobry.github.io/angular-cache/,它与ngResource搭配良好,并且可以轻松配置为同步到localStorage,因此在页面刷新后不需要重新执行请求。
$resource('my/kewl/url/:key', { key: '@key' }, {
'get': { method: 'GET',
cache: $angularCacheFactory('MyKewlResourceCache', {
storageMode: 'localStorage' })
}
});
$cacheFactory不是你的解决方案,因为正如Blackhole所说,缓存将在每次会话过期时被清除。$cacheFactory只是一个Angular方式的memcache实现。
angular-cache只是一个辅助API,基本上它添加了$cacheFactory选项之一,即将缓存存储到持久存储(例如localStorage)中。
因此,如果您想将数据存储到持久性存储中,可以使用其中一个可用的模块,例如angular-local-storage 或使用$cookieStore,但这将创建cookie...