本地存储与AngularJS $ cacheFactory

Ras*_*lom 58 javascript local-storage angularjs

我有一个存储大量客户端数据的问题,我无法确定哪种方式更好.现在我正在使用AngularJS的cacheFactory,它运行正常,但所有数据都会重新加载新会话.是否值得使用本地存储?

Bla*_*ole 83

如果您的目标是存储客户端数据和持久数据,则不能使用$ cacheFactory,它只缓存当前会话的数据.

一种解决方案是使用新的本地存储API.这个令人敬畏的Angular模块可以为您完成所有脏工作,甚至可以回退到旧浏览器的cookie!

  • @Rasalom我迟到了,但是我查看了localstorage模块的源代码,它确实存储了对象,而不需要你自己json编码/解码它们(它适合你).这篇文章可能是在这篇文章之后开发的,但我想分享给未来的读者. (21认同)
  • 投票给本地存储模块提及.救了我很多编码! (2认同)
  • 请注意,$ cacheFactory不会缓存当前会话的数据,它会将数据缓存在内存中,因此只要您的角度应用程序处于活动状态.例如,页面刷新会将其杀死.@Blackhole你可以更新那个以避免误导人吗? (2认同)

tma*_*ini 21

另一种解决方案是http://jmdobry.github.io/angular-cache/,它与ngResource配合良好,也可以轻松配置为同步到localStorage,因此在页面刷新后不需要重新完成请求.

$resource('my/kewl/url/:key', { key: '@key' }, {
  'get': { method: 'GET', 
           cache: $angularCacheFactory('MyKewlResourceCache', { 
                                          storageMode: 'localStorage' })
         }
});
Run Code Online (Sandbox Code Playgroud)