广泛部署的技术
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 应用适应其网络环境。
开发中的技术
Streams规范提供了用于高效地创建和接收数据流的API。移动网络的网络状况可能会出现波动,带宽可能受到限制;对低级别I/O原语的访问使 Web 应用内的流量控制能够将网络传输调整为某个读取器(如媒体播放器)的速度,还能改进感知性能,例如在 Service Worker 从先前缓存的内容中组装流并且在线获取内容以加速第一组页面的渲染操作时。在任何时候取消流以停止下载的能力也有助于在需要时立即为其他任务回收网络带宽。
Beacon API 旨在让开发人员排列无监督的 HTTP 请求,并在让浏览器在适当的时候执行它们,为更好的网络优化打开大门。
推送 API 允许 Web 应用接收服务器发送的消息,无论该 Web 应用是否在浏览器窗口中处于活动状态。IETF 的基于 Web 的推送通知工作组开发了适用于请求向用户代理传递推送消息,创建新的推送消息传送订阅以及监视新推送消息的协同协议(RFC 8030)。
Web 实时通讯方面的工作还提供了具有实时特性的浏览器之间的直接点对点数据连接,为协作式多设备的 Web 应用开辟了道路。
探索性工作
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) | ||
网络特性 | Network Information API Web 平台孵化社区组 (Web Platform Incubator Community Group) |