11 月 19 - 20 日 Apache Pulsar 社区年度盛会来啦,立即报名! 了解详情
写点什么

LocalForage:引领离线时代

  • 2014-03-05
  • 本文字数:1073 字

    阅读完需:约 4 分钟

Mozilla 基金会发布了 localForage ,一个致力于简化 web 应用中离线数据存储过程的新型 JavaScript 库。

因为可选项很多,离线支持虽说不是新兴浏览器技术,也常常过于碎片化。LocalForage 的独到之处在于尝试融合两方优势:用简单API 实现某些新兴技术特性(异步和blob 支持)。这能为web 应用提供强大的离线能力,使其更接近本地移动版本,这样,开发者工作起来也会更自然。

LocalStorage 是最早出现的一种可选技术,这一技术为离线存储提供了简单的数据访问功能。然而,基准测试证实其速度较慢,而且只能同步使用,且无法处理二进制blob (例如,无法处理mp3 文件缓存)。此后相继出现了其他两种很受欢迎的技术—— IndexedDB Web SQL ——异步,高效并支持大数据集。这两项技术的缺陷在于其 API 并不易于使用,而且都不为所有主流浏览器支持

最近发布的 localForage 尝试通过技术融合来克服这些困难——既有来自 IndexedDB 和 Web SQL 的异步性和 blob 支持,也支持极简的 localStorage 语法:

复制代码
var settings = {color: 'black', font: 'Helvetica'};
localForage.setItem('settings', settings, function(result) {
console.log(result);
});

相比单独使用 localStorage,内置的 IndexedDB 和 Web SQL 支持能让 web 应用存储更多数据。其 API 的非阻塞特性使得 web 应用不必因 get/set 调用挂起主线程,从而提高了执行效率。此外,localForage 支持回调,而 ES6 Promises 为开发者预留了最佳实现的选择权。

无需手动管理(最好的驱动应独立于应用运行所依赖的浏览器进行选择),程序库就会自动装载并管理 IndexedDB、Web SQL 及 localStorage 驱动。 如果 IndexedDB 和 Web SQL 同时不可用,localForage 将回退到 localStorage,这样处理保证了至少基本数据都能离线存储了(尽管没有 blob 支持,而且速度会慢上许多)。

LocalForage 支持所有当代浏览器。而所有浏览器都支持异步存储,括号中标注了支持 localStorage 的浏览器版本:

  • Android Browser 2.1
  • BlackBerry 7
  • Chrome 23 (Chrome 4.0 with localStorage)
  • Chrome for Android 32
  • Firefox 10 (Firefox 3.5 with localStorage)
  • Firefox for Android 25
  • IE 10 (IE 8 with localStorage)
  • IE Mobile 10
  • Opera 15 (Opera 10.5 with localStorage)
  • Opera Mobile 11
  • PhoneGap/Apache Cordova 1.2.0
  • Safari 3.1

查看原文接: Going Offline with LocalForage


感谢邵思华对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2014-03-05 05:311913

评论

发布
暂无评论
发现更多内容

【模拟面试-半年实习】项目经验不突出,如何让面试官「眼前一亮」

测试猿温大大

面试 电商 测试工程师

【面试-八股文】网络协议万字总结,助你吊打面试官系列

测试猿温大大

面试 TCP 网络协议 HTTP

2022年中国可穿戴医疗设备发展洞察

易观分析

可穿戴医疗设备

Apache DolphinScheduler&ShenYu(Incubating)联合 Meetup,暖春 3 月与你相约!

大数据 开源 工作流调度 Apache DolphinScheduler

恒源云(Gpushare)_【存储优化】/hy-tmp可以扩/缩容啦

恒源云

云计算 存储 tmp

低版本skywalking与LinkAgent不兼容怎么办?记一次详细的解决过程

TakinTalks稳定性社区

Docker 配置国内加速镜像

信号量

Docker Linxu

被动防御→积极防御,系统稳定性保障思路启发

TakinTalks稳定性社区

一个 测试岗 面了 30 多人,不能再真实了...

六十七点五

软件测试 面试题 自动化测试 经验总结 测试工程师

Apifox才是最强Postman替代品,看看国产软件到底有对牛!

Liam

后端 Postman API swagger java开发工具

抖音获客,抖音SEO询盘系统源码开发,思路分享,开发者掏心窝的说......

yunluohd168

短视频获客 抖音获客系统源码 大数据获客 抖音SEO获客源码

【模拟面试-2年测试工程师】「脱产1年」如何能拿下offer

测试猿温大大

【模拟面试-4年实习】工作4年业务做的不深入,如何突破

测试猿温大大

面试 测试工程师

【面试-八股文】万字app测试 面试题,助你吊打面试官系列

测试猿温大大

面试 App 测试工程师 app测试

来了来了!MatrixOne技术架构详解来了!

MatrixOrigin

数据库 数据平台 MatrixOrigin MatrixOne 矩阵起源

【面试-如何谈薪资】万字总结 HR高频55问,让你涨薪30%

测试猿温大大

面试 薪资 HR

【直播回顾】OpenHarmony知识赋能第四期第二课——GPIO驱动开发

OpenHarmony开发者社区

OpenHarmony GPIO 驱动开发

【面试-八股文】mysql 万字总结,助你吊打面试官

测试猿温大大

MySQL 面试

【工具-jmeter】jmeter 入门级demo练习,包教包会

测试猿温大大

面试 Jmeter 测试工程师

【面试-八股文】Linux高频面试题,助你吊打面试官系列

测试猿温大大

Linux 面试 测试工程师

【面试-项目篇】外包点工跳到甲方,薪资涨了30%

测试猿温大大

面试 涨薪 测试工程师 项目经验

详解4种微服务框架接入Istio方案

华为云开发者联盟

微服务 k8s istio 服务治理 微服务框架

【面试-薪资查询】查薪资大揭秘,一般人不告诉他

测试猿温大大

黑科技 互联网行业薪资

10年后,掌握 Rust 语言,是不是入行汽车软件的必要条件呢?

非凸科技

网易会议开源之桌面端篇

网易云信

开源

微博评论高性能高可用计算架构设计

Geek_36cc7c

全新 OceanBase 社区版开发者中心 ODC 核心功能解读

OceanBase 数据库

oceanbase OceanBase 开源 OceanBase 社区版

【面试-性能测试工程师】如何在项目中练手性能测试,莫慌

测试猿温大大

面试 性能测试 测试工程师

【工具- selenium】selenium 入门级demo练习,包教包会

测试猿温大大

面试 测试工程师 selenium

Linux运维技术之Linux云计算架构

学神来啦

Linux 架构 运维 linux云计算

测试开发【Mock平台】01开篇:平台设计和整体规划

MegaQi

测试开发 测试平台开发教程 测试干货

LocalForage:引领离线时代_JavaScript_João Paulo Marques_InfoQ精选文章