广泛部署的技术

简单数据存储

对于简单的数据存储,Web存储规范提供了两个基本机制,localStoragesessionStorage,前者可以无限期地保存数据,后者基于浏览器会话。

数据库查询/更新

在基于文件的访问之上,索引数据库 API(IndexedDB)定义了一个与 JavaScript 集成的值和分层对象的数据库,并且可以非常有效地进行查询和更新 - 3.0版正在开发中。

加密存储

对于需要加密的数据,Web密码学工作组提出的Web密码学API为Web应用程序提供了强有力的加密原语,并且可以通过Web秘钥发现API绑定到预先提供的密钥。

文件下载

HTML5 的 download 属性提供了一个简单的机制来触发文件下载(而不是页面导航),并可以设置用户友好的文件名。

特性规范 / 小组成熟度现有实现
选择浏览器…
简单数据存储Web 存储第二版 (Web Storage (Second Edition))
Web 平台工作组 (Web Platform Working Group)
正式推荐标准
数据库查询/更新索引数据库 API 2.0 (Indexed Database API 2.0)
Web 平台工作组 (Web Platform Working Group)
正式推荐标准
加密存储Web密码学API (Web Cryptography API)
Web密码学工作组 (Web Cryptography Working Group)
正式推荐标准
WebCrypto密钥发现 (WebCrypto Key Discovery)
Web密码学工作组 (Web Cryptography Working Group)
工作组备忘 - informative
文件下载HTML标准中的download 属性 (download attribute in HTML Standard)
Web 超文本应用技术工作小组 (WHATWG)
持续更新标准

开发中的技术

存储管理

随着越来越多的数据需要被浏览器存储(例如用于离线使用),对于开发者来说获得可靠的存储空间变得至关重要。存储规范将允许 Web 应用程序获取配额估计的存储空间,并要求将其存储的数据视为持久性数据。在未经用户明确同意的情况下,这些数据不能被抢占。

文件操作

尽管移动设备通常没有明显的文件系统,但通常至少存在某种文件系统的概念。文件API提供了一个用于表示Web应用中的文件对象的API,还可用以可编程方式选择文件并访问文件中的数据。该API目前是只读的,关于读写API的讨论现已恢复,请参阅下面的本地文件系统标准。

特性规范 / 小组成熟度现有实现
选择浏览器…
存储管理Storage Standard
Web 超文本应用技术工作小组 (WHATWG)
持续更新标准
文件操作文件 API (File API)
Web 应用工作组 (Web Applications Working Group)
工作草案

探索性工作

文件操作

本地文件系统规范是一个早期的API提议,建立在文件API之上,允许网站获得对文件系统的写访问权。

简单数据存储

localStorage 机制是一种简单的数据存储机制,但有一个问题:API 是同步的,而这会导致性能和跨窗口同步问题。索引数据库(IndexedDB)虽然是异步的,但很难用于简单的 get/set 操作。KV存储规范描述了一个简单的异步键值存储API,作为 localStorage 的后续版本。该 API 基于 IndexedDB 之上,如果应用需要使用高级特性(例如事务、索引或游标),则可以转换到索引数据库。该标准在孵化后计划集成到索引数据库标准中。

状态管理

HTTP cookies 为 Web 提供了有效的状态管理机制,然而 document.cookie 接口的同步性一直是性能问题的来源之一,尤其是在浏览器使用多个进程和线程来尽可能地改善感知性能和响应度的情况下,这也包括处理能力通常比较有限的移动平台上。Worker因为无法访问DOM,也无法使用cookies。Cookie 存储 API 为文档和 Worker 定义了一个异步的 Cookie API。

存储管理

Web应用需要在本地存储不同类型的数据,并在存储空间不足时使用不同的收回策略。例如,应用可能希望先移除图片,因为图片可以通过网络获取,但可能希望尽可能保留应用状态。存储桶提议使应用能够创建多个存储桶,其中用户代理可以选择删除单个桶里的内容而独立于其他桶。

如果用户同意,存储访问 API 允许 <iframe> 元素内的内容请求并获得对其客户端存储的访问权限,以便依赖于对客户端存储的访问权限的嵌入式内容可以在保护用户的隐私的同时访问客户端存储的内容。

共享资源

Web 锁 API 允许应用获取存储锁,以协调可能在不同选项卡中同时运行的应用实例之间的读写操作。

特性规范 / 小组实现意向
选择浏览器…
文件操作本地文件系统 (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)
存储管理存储桶 (Storage Buckets)
Web 平台孵化社区组 (Web Platform Incubator Community Group)
存储访问 API (The Storage Access API)
隐私兴趣组 (Privacy Community Group)
共享资源Web 锁 API (Web Locks API)
Web 平台孵化社区组 (Web Platform Incubator Community Group)

不再进行的工作

配额管理 API
研发配额管理 API 的初衷是 Web 平台工作组希望提供一个管理本地存储资源使用和可用性的API,由于新的存储提议的出现现在已不再继续研发。
客户端基于 SQL 的数据库
为了支持在 IndexedDB 上的工作,从2009年开始的客户端基于 SQL 的数据库的工作已经不再进行。
地址簿数据
通信应用可以从与用户现有的数据记录集成中受益;在移动设备上,地址簿是一个特别有用的信息来源。对于浏览器之外的 Web 应用,纯程序化方法是系统应用工作组的一部分;由于这个小组现在已经关闭,因此目前暂时不会有联系人管理器 API 相关的工作。在浏览器中,HTML 5.1 为联系人信息提供了自动填充字段,可以让浏览器重新使用通讯录中的数据。