HTML5的数据存储

2017-10
在前端开发过程中会遇到数据存储问题,HTML5的原本存储有以下几种方案
HTML5标准方案:cookie、localstorage、sessionstorage、websql、indexedDB

cookie

体量最小,可以设置过期时间。不能跨域。

localstorage

适合key、value键值对的存储,数据量一般不超过5M。是常用的轻量数据存储方案。不能跨域。

sessionstorage

也是键值对,特点是关闭App就消失了,也不能跨webview,一般不用于持久化数据保存。

websql

是手机端关系型数据库的最佳方案,各种手机都支持。只是该标准不再更新。但是目前手机端重量数据存储的唯一可商用方案。注意iOS8、9的wkWebview不支持websql。

indexedDB

是HTML5里最新的数据存储规范,但不是基于SQL,而是基于对象。
indexedDB性能更高,全是异步处理,学习难度偏大。最重要的是目前手机端支持度不行。Android4.4以上和iOS8以上才支持indexedDB。

在移动APP开发中,使用html5+的话则可以使用HTML5+扩展方案:plus.navigator.setCookie、plus.storage、plus.io来进行书记存储

plus.navigator.setCookie

与HTML5的标准cookie相比,plus的扩展主要是为了跨域。所谓跨越,就是本地HTML页面和服务器HTML页面共享cookie数据,或者说本地页面的js可以操作服务器页面产生的cookie。如果没有跨越需求,不需要使用plus扩展。注意iOS8以后的wkWebview不支持setcookie。

plus.storageplus.storage

也是键值对数据存储。它是把OS给原生App使用的键值对存储数据库封装一层给JS使用。plus.storage没有理论上的大小限制。plus.storage相比于localstorage 还有一个特点是可跨域。当一个存储数据,需要被本地和来自服务器的页面同时读写时,就涉及跨域问题。此时HTML5的localstorage不能满足需求,只能使用plus.storage。plus.storage操作要比localstorage慢几十毫秒,尤其是在循环里调用plus api会放大这种慢。如果不是因为大小限制或跨越,尽量使用localstorage。有网友封装了一个框架,针对key-value数据,在localstorage超过5m时自动切换到plus.storage,参考http://ask.dcloud.net.cn/article/552。虽然这么做听起来有点复杂,但我们对这种追求性能极致的开发者非常赞赏。

plus.ioplus.io

是文件读写,虽然也可以通过读写txt等文件存储数据,但并不如专业的storage和websql方便。plus.io更多的是用于图片等多媒体文件的本地保存。

本人使用的是HBuilder,开发移动APP

你可能感兴趣的:(HTML5的数据存储)