广泛部署的技术
对于简单的数据存储,Web存储规范提供了两个基本机制,localStorage
和 sessionStorage
,前者可以无限期地保存数据,后者基于浏览器会话。
在基于文件的访问之上,索引数据库 API(IndexedDB)定义了一个与 JavaScript 集成的值和分层对象的数据库,并且可以非常有效地进行查询和更新 - 3.0版正在开发中。
对于需要加密的数据,Web密码学工作组提出的Web密码学API为Web应用程序提供了强有力的加密原语,并且可以通过Web秘钥发现API绑定到预先提供的密钥。
HTML5 的 download
属性提供了一个简单的机制来触发文件下载(而不是页面导航),并可以设置用户友好的文件名。
开发中的技术
尽管移动设备通常没有明显的文件系统,但通常至少存在某种文件系统的概念。文件API提供了一个用于表示Web应用中的文件对象的API,还可用以可编程方式选择文件并访问文件中的数据。该API目前是只读的,关于读写API的讨论现已恢复,请参阅下面的本地文件系统标准。
探索性工作
随着越来越多的数据需要被浏览器存储(例如用于离线使用),对于开发者来说获得可靠的存储空间变得至关重要。存储规范将允许 Web 应用程序获取配额估计的存储空间,并要求将其存储的数据视为持久性数据。在未经用户明确同意的情况下,这些数据不能被抢占。
localStorage
机制是一种简单的数据存储机制,但有一个问题:API 是同步的,而这会导致性能和跨窗口同步问题。索引数据库(IndexedDB)虽然是异步的,但很难用于简单的 get/set 操作。KV存储规范描述了一个简单的异步键值存储API,作为 localStorage
的后续版本。该 API 基于 IndexedDB 之上,如果应用需要使用高级特性(例如事务、索引或游标),则可以转换到索引数据库。该标准在孵化后计划集成到索引数据库标准中。
HTTP cookies 为 Web 提供了有效的状态管理机制,然而 document.cookie
接口的同步性一直是性能问题的来源之一,尤其是在浏览器使用多个进程和线程来尽可能地改善感知性能和响应度的情况下,这也包括处理能力通常比较有限的移动平台上。Worker因为无法访问DOM,也无法使用cookies。Cookie 存储 API 为文档和 Worker 定义了一个异步的 Cookie API。
特性 | 规范 / 小组 | 实现意向选择浏览器… |
---|---|---|
存储配额 | 存储 (Storage) Web 超文本应用技术工作小组 (WHATWG) | 已有稳定实现: 已有实验性实现: |
文件操作 | 本地文件系统 (Native File System) Web 平台孵化社区组 (Web Platform Incubator Community Group) | |
简单数据存储 | KV存储 (KV Storage) Web 平台孵化社区组 (Web Platform Incubator Community Group) | |
状态管理 | Cookie 存储 API (Cookie Store API) Web 平台孵化社区组 (Web Platform Incubator Community Group) |
不再进行的工作
- 配额管理 API
- 研发配额管理 API 的初衷是 Web 平台工作组希望提供一个管理本地存储资源使用和可用性的API,由于新的存储提议的出现现在已不再继续研发。
- 客户端基于 SQL 的数据库
- 为了支持在 IndexedDB 上的工作,从2009年开始的客户端基于 SQL 的数据库的工作已经不再进行。
- 地址簿数据
- 通信应用可以从与用户现有的数据记录集成中受益;在移动设备上,地址簿是一个特别有用的信息来源。对于浏览器之外的 Web 应用,纯程序化方法是系统应用工作组的一部分;由于这个小组现在已经关闭,因此目前暂时不会有联系人管理器 API 相关的工作。在浏览器中,HTML 5.1 为联系人信息提供了自动填充字段,可以让浏览器重新使用通讯录中的数据。