当前位置 : 主页 > 手机开发 > 其它 >

不要自认为localStorage在hybrid app中是可靠的

来源:互联网 收集:自由互联 发布时间:2021-06-12
不要自认为localStorage在hybrid app中是可靠的 注:本文乃翻译而来,如有错误之处,请大家多多指正,大家也可挪步原文。 在Cordova/PhoneGap app中有多种本地存储数据的方式,而最常用的无

不要自认为localStorage在hybrid app中是可靠的

注:本文乃翻译而来,如有错误之处,请大家多多指正,大家也可挪步原文。

在Cordova/PhoneGap app中有多种本地存储数据的方式,而最常用的无疑是localStorage,localStorage提供了一种存储键值对数据的方案:

// simple example
localStorage.setItem('name', 'Pinky');  
var name = localStorage.getItem('name');  
console.log(name);

// complex example
var records = [{ name: 'Pinky', age: 1 }, { name: 'Brain', age: 2 }];  
localStorage.setItem('records', JSON.stringify(records));  
var output = JSON.parse(localStorage.getItem('records'));  
console.table(output);

虽然localStorage比Cookie的存储能力要强大许多,不过在Cordova/PhoneGap app中使用localStorage时,Android和IOS上也最多拥有5MB的空间。

大多数情况即使你关闭了app或关闭了手机,使用localStorage存储的数据能够继续存在,但是Android和IOS设备对于localStorage的处理上可能会导致问题:

IOS

IOS 8,当系统内存不足时,localStorage可能会被清除,就像ionic论坛里这篇帖子说的情况。

Android

同样是在ionic得论坛中,很多用户遇到localStorage被清除的情形,就像这篇帖子。

所以,难道不能使用强大简便的localStorage了吗?
当然不能不用,但是要使用得当:应该使用localStorage存储那些不需要永久保存的数据。一个很好的使用localStorage的场景是使用localStorage存储那些从外部获得的数据,即使localStorage被清除,也可以通过请求外部数据再次获得。

替代方案

在hybrid app中,如果需要兼顾体验感和持久化存储,那么可以使用SQLite数据库。一种方案是使用PouchDB,一个开源的JavaScript框架,PouchDB封装了WebSQL, IndexedDB和SQLite。如果想了解如何使用PouchDB,可以查看我的另一篇译文。另一种解决方案是使用LokiJS,LokiJS是一个快速的内存数据库,如果想了解如何使用LokiJS,可以查看我的另一篇译文ionic怎样使用LokiJS作为本地存储。

推荐一款个人使用了半年的理财产品:创建了6年的挖财,新人收益36%,7天18%,1年10%,注册送308元券

网友评论