广泛部署的技术

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

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

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

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

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

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

特性规范成熟度现有实现
HTTP 网络 APIXMLHttpRequestLS

已有稳定实现
shipped in firefoxshipped in chromeshipped in edgeshipped in safari

FetchLS

已有稳定实现
shipped in firefoxshipped in chromeshipped in edgeshipped in safari

跨域请求跨域资源共享 (Cross-Origin Resource Sharing)REC

已有稳定实现
shipped in firefoxshipped in chromeshipped in edgeshipped in safari

服务器推送请求服务器发送事件 (Server-Sent Events)REC

已有稳定实现
shipped in firefoxshipped in chromeshipped in safari

双向连接The WebSocket APICR

已有稳定实现
shipped in firefoxshipped in chromeshipped in edgeshipped in safari

在线状态HTML 5.1中的onLine DOM flagREC

已有稳定实现
shipped in firefoxshipped in chromeshipped in edgeshipped in safari

网络特性资源计时第一版 (Resource Timing Level 1)CR

已有稳定实现
shipped in firefoxshipped in chromeshipped in edgeshipped in safari

开发中的技术

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

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

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

探索性工作

Web 后台同步 API 的早期工作将提供一个强大的基于 Service Worker 的机制,使 Web 应用可以在后台下载和上传内容,即使没有正在运行的浏览器。

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