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 )关注我们,并与我们的编辑和其他读者朋友交流。
评论