LocalForage:引领离线时代

阅读数:1253 2014 年 3 月 5 日

话题:JavaScript语言 & 开发

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

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

LocalStorage是最早出现的一种可选技术,这一技术为离线存储提供了简单的数据访问功能。然而,基准测试证实其速度较慢,而且只能同步使用,且无法处理二进制 blob (例如,无法处理 mp3 文件缓存)。此后相继出现了其他两种很受欢迎的技术——IndexedDBWeb 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)关注我们,并与我们的编辑和其他读者朋友交流。