资讯专栏INFORMATION COLUMN

JavaScript の MUI-APP 数据储存方法

fancyLuo / 1246人阅读

摘要:是手机端关系型数据库的最佳方案,各种手机都支持。但是目前手机端重量数据存储的唯一可商用方案。是里最新的数据存储规范,但不是基于,而是基于对象。与的标准相比,的扩展主要是为了跨域。有网友封装了一个框架,针对数据,在超过时自动切换到,参考。

总结HTML5+的离线本地存储的多种方案:

[ √ ] HTML5标准方案:cookie、localstorage、sessionstorage、websql、indexedDB

[ √ ] HTML5Plus扩展方案:plus.navigator.setCookie、plus.storage、plus.io

分析:

cookie
体量最小,可以设置过期时间。不能跨域. 所有设备都支持(IOS不支持 ASCII码,不支持中文)

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

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

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

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

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

plus.storage
plus.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/arti...。虽然这么做听起来有点复杂,但我们对这种追求性能极致的开发者非常赞赏。)

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

比如图文列表的离线使用,一般有2种做法:

图片下载不通过img的src,而是plus.dowload下载的,先下载图片,存好路径后,然后img的src动态指定文件路径

图片使用img的src下载,然后用canvas把img存成图片文件。下次不联网,img的scr直接指向本地文件

实际开发中常常使用如下方案:

websql + base64 + html5本地存储保存图片和文件 + plus.dowload缓存图片


原文地址 : https://segmentfault.com/a/11...
如果喜欢, 应该: 点赞 $underline{或者}$ ...
如果有 新的想法 可以直接在下方评论或者 联系我 。

---------------------------------------【原创】 ---------------------------------------

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/54409.html

相关文章

  • JavaScript MUI-APP 数据储存方法

    摘要:是手机端关系型数据库的最佳方案,各种手机都支持。但是目前手机端重量数据存储的唯一可商用方案。是里最新的数据存储规范,但不是基于,而是基于对象。与的标准相比,的扩展主要是为了跨域。有网友封装了一个框架,针对数据,在超过时自动切换到,参考。 总结HTML5+的离线本地存储的多种方案: [ √ ] HTML5标准方案:cookie、localstorage、sessionstorage、w...

    wenshi11019 评论0 收藏0
  • JavaScript 之银弹技法

    摘要:之银弹技法下文这些淫巧在之前自认为是居家必备,装逼撩妹的必备之物,博主一直敝帚自珍,不愿拿出来分享,现如今,极尽能事,我知道再不拿出来就在没有价值了来由博主入行前端写时候,因为需要兼容低版本,时常需要在繁杂冗长的操作夹杂的代码中,尽可能巧妙 JavaScript 之银弹の技法 下文这些淫巧在之前自认为是居家必备,装逼撩妹的必备之物,博主一直敝帚自珍,不愿拿出来分享,现如今,ES6+极尽...

    HollisChuang 评论0 收藏0
  • 【呆萌研究】JavaScript闭包

    摘要:为什么会产生闭包究其根本,是因为代表的函数包含的作用域。而在作用域链中,外部函数的活动对象始终处于第二位,外部函数的外部函数的活动对象处于第三位直到作为作用域链终点的全局执行环境。 前言 此文的内容主要是来自看书的总结+小小的实践哦~会不断更新总结。 什么是闭包 书上是这样定义闭包的: 有权访问另一个函数作用域中变量的函数。 举一个例子: function test(){ va...

    CHENGKANG 评论0 收藏0
  • JavaScript 内容属性(HTML属性attribute)和 DOM 属性(propert

    摘要:博文内容属性属性和属性标签博文粗略解读与做对比内容属性属性属性属性中的对应原生中的中的对应原生中对象在中在更早版本的中,内容属性在对象上表示为文档对象模型。即中属性属性解读内容属性在是源中指定的属性,例如,。 [博文]内容属性(HTML属性)和 DOM 属性 标签: 博文 JavaScript 粗略解读(与jQuery做对比) 内容属性(HTML属性) : attribute D...

    elva 评论0 收藏0

发表评论

0条评论

fancyLuo

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<