Javascript 本地存储与AngularJS$cacheFactory

Javascript 本地存储与AngularJS$cacheFactory,javascript,angularjs,local-storage,Javascript,Angularjs,Local Storage,我有一个存储大量客户端数据的问题,我无法决定哪种方式更好。现在我正在使用AngularJS的cacheFactory,它工作正常,但所有数据都会通过新会话重新加载。是否值得改为使用本地存储?如果您的目标是存储客户端和持久性数据,则不能使用,它只缓存当前会话的数据 一种解决方案是使用新的本地存储API。为你做所有肮脏的工作,甚至退回到旧浏览器的cookies 另一种解决方案是,它与ngResource配合良好,还可以轻松配置为同步到本地存储,因此页面刷新后不需要重新执行请求 $resource('

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

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


一种解决方案是使用新的本地存储API。为你做所有肮脏的工作,甚至退回到旧浏览器的cookies

另一种解决方案是,它与ngResource配合良好,还可以轻松配置为同步到本地存储,因此页面刷新后不需要重新执行请求

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

$cacheFactory显然不是您的解决方案,因为正如Blackhole所说的,每次会话到期时缓存都会被清除$cacheFactory只是一个memcache实现

angular cache只是一个帮助器API,基本上它向$cacheFactory添加了一个选项,其中一个选项是将缓存存储到持久性存储(如localStorage)中


因此,如果你想在持久性存储中存储数据,你可以使用一个可用的模块,比如或使用,但它会创建cookies…

另一个角度模块来完成这项工作:

你好,你可以使用webstorage,然后你可以使用工厂获取数据,我最终选择了角度方式:没有Getter'n'Setter废话!值得注意的是,本地存储不是secure@mb21ngStorage已死,具有杰出的关键PR's@Rodney它没有活动和关键问题。不,您应该在存储对象之前序列化对象(并取消序列化以读取它们),通常是在JSON中。但是直接存储对象并不会产生太大的影响,因为所有的持久存储都必须使用文件,所以线性化数据。请投票支持提到的本地存储模块。为我节省了很多代码@Rasalom我来晚了,但是我查看了localstorage模块的源代码,它确实存储了对象,而不需要您自己对它们进行json编码/解码(它为您完成)。此功能可能是在这篇文章之后开发的,但我想与未来的读者分享。您链接的演示页面实际上不起作用,控制台中存在未捕获的语法错误。请注意,$cacheFactory不会缓存当前会话的数据,它会将数据缓存在内存中,因此,只要角度应用程序处于活动状态。例如,一次页面刷新就会终止它@黑洞,请你更新一下,以避免误导人们?我觉得这个比公认答案的解决方案更强大。感谢$resource不再在其官方网站上看到它,$cacheFactory不会缓存当前会话的数据,它会将数据缓存在内存中,因此只要您的angular应用程序处于活动状态。例如,一次页面刷新就会终止它@用户3305685为了避免误导他人,您能更新一下吗?