广泛部署的技术

HTTP 网络 API

XMLHttpRequest(Ajax开发的基础)是一个广泛部署的API,用于使用 HTTP 和 HTTPs 协议从Web服务器加载内容:W3C 规范(以前称为XMLHttpRequest Level 2)旨在记录现有的已部署的 API(能够在不同域中的服务器上提出请求,对网络操作进度进行程序化反馈,以及更有效地处理二进制内容),这项工作现在已经在WHATWG中完成了。WHATWG 的 Fetch API还提供了一个更强大的基于 Promise 的替代方案。

跨域请求

默认情况下,浏览器不允许在单个网页上的不同域名(或者更具体地说,不同源,包括协议、域名和端口的组合)之间进行请求;这个规则保护用户,使用户们不会被一个网站滥用他们的证书并窃取他们在另一个网站上的数据。站点可以通过使用跨源资源共享(Cross-Origin Resource Sharing,CORS)机制来选择退出该规则,从而在 Web 应用和服务之间开展更广泛的合作。

服务器推送请求

XMLHttpRequest 对于客户端发起的网络请求很有用,但是移动设备的网络能力有限,网络请求在其电池电量上(以及有时在用户账单上)引起的开销通常可以更好地利用服务器发起的请求。服务器发送事件 API 允许基于推送通知触发 DOM 事件(通过 HTTP 和其他协议)。

双向连接

WebSocket API 构建在 IETF WebSocket协议(RFC6455)之上,与 XMLHttpRequest 相比,提供了双向、更灵活、消耗资源更少的网络连接。

在线状态

当然,使用网络连接的一个重要部分依赖于能够确定连通性是否存在以及网络的类型。当网络连接不可用于 Web 环境(该标志不能可靠地断言 Web 环境在线)时,HTML5 onLine DOM标志及其关联的更改事件(online)将发出信号。

网络特性

Resource Timing API 提供了精确地测量网络对加载各种资源所需时间的影响,提供了另一种方法来使 Web 应用适应其网络环境。

特性规范 / 小组成熟度现有实现
选择浏览器…
HTTP 网络 APIXMLHttpRequest Standard
Web 超文本应用技术工作小组 (WHATWG)
持续更新标准
Fetch Standard
Web 超文本应用技术工作小组 (WHATWG)
持续更新标准
跨域请求Fetch Standard中的CORS protocol (CORS protocol in Fetch Standard)
Web 超文本应用技术工作小组 (WHATWG)
持续更新标准
服务器推送请求服务器发送事件 (Server-Sent Events)
HTML Working Group
退休
双向连接WebSockets Standard
Web 超文本应用技术工作小组 (WHATWG)
持续更新标准
在线状态HTML标准中的onLine DOM flag (onLine DOM flag in HTML Standard)
Web 超文本应用技术工作小组 (WHATWG)
持续更新标准
网络特性资源计时第二版 (Resource Timing Level 2)
Web 性能工作组 (Web Performance Working Group)
候选推荐标准

开发中的技术

底层I/O

Streams规范提供了用于高效地创建和接收数据流的API。移动网络的网络状况可能会出现波动,带宽可能受到限制;对低级别I/O原语的访问使 Web 应用内的流量控制能够将网络传输调整为某个读取器(如媒体播放器)的速度,还能改进感知性能,例如在 Service Worker 从先前缓存的内容中组装流并且在线获取内容以加速第一组页面的渲染操作时。在任何时候取消流以停止下载的能力也有助于在需要时立即为其他任务回收网络带宽。

HTTP 网络 API

Beacon API 旨在让开发人员排列无监督的 HTTP 请求,并在让浏览器在适当的时候执行它们,为更好的网络优化打开大门。

服务器推送请求

推送 API 允许 Web 应用接收服务器发送的消息,无论该 Web 应用是否在浏览器窗口中处于活动状态。IETF 的基于 Web 的推送通知工作组开发了适用于请求向用户代理传递推送消息,创建新的推送消息传送订阅以及监视新推送消息的协同协议(RFC 8030)。

点对点数据连接

Web 实时通讯方面的工作还提供了具有实时特性的浏览器之间的直接点对点数据连接,为协作式多设备的 Web 应用开辟了道路。

双向连接

WebTransport 提案将允许在浏览器和服务器之间发送和接收数据,并在顶部使用常见 API 来实现其下的可插拔协议(尤其是基于QUIC)。该 API 与 WebSocket 相似,也是客户端和服务器的双向连接,但允许进一步减少客户端和服务器之间的网络通信延迟,并且还支持多个流、单向流、乱序和不可靠传输。使用场景包括使用不可靠且乱序的消息向服务器重复发送低延迟的游戏状态、从服务器到客户端的媒体片段的低延迟传输以及大多数逻辑在服务器上运行的云场景。

特性规范 / 小组成熟度现有实现
选择浏览器…
底层I/OStreams Standard
Web 超文本应用技术工作小组 (WHATWG)
持续更新标准
HTTP 网络 APIBeacon
Web 性能工作组 (Web Performance Working Group)
候选推荐标准
服务器推送请求推送 API (Push API)
Web 应用工作组 (Web Applications Working Group)
工作草案
点对点数据连接WebRTC 1.0: Real-Time Communication Between Browsers
Web 实时通讯工作组 (WebRTC Working Group)
正式推荐标准
双向连接WebTransport
WebTransport Working Group
工作草案

探索性工作

后台执行

Web 后台同步规范建立在 Service Workers 之上,通过在后台运行网络操作,使 Web 应用能够无缝地保持用户数据的最新状态,从而适应用户在移动设备上可能经常遇到的不可靠的连接。

Background Fetch 定义了一个类似的基于 Service Workers 的后台下载和上传机制,但允许以用户可见的方式让操作在后台继续进行,即使是在用户关闭了所有浏览器窗口和 worker 的情况下。该规范专门用于支持下载和上传大型资源(如播客、电影、纹理)。

网络特性

Web 平台孵化社区组重新恢复了之前停止的可以解决网络特性的发现问题的网络信息 API 的工作。

特性规范 / 小组实现意向
选择浏览器…
后台执行Web 后台同步 (Web Background Synchronization)
Web 平台孵化社区组 (Web Platform Incubator Community Group)
Background Fetch
Web 平台孵化社区组 (Web Platform Incubator Community Group)
网络特性网络信息 API (Network Information API)
Web 平台孵化社区组 (Web Platform Incubator Community Group)