广泛部署的技术
页面可见性规范允许开发者检测他们的应用何时在前台,从而相应地调整他们的操作和资源消耗。
特性 | 规范 / 小组 | 成熟度 | 现有实现选择浏览器… |
---|---|---|---|
可见性检测 | 页面可见性 (Page Visibility (Second Edition)) Web 性能工作组 (Web Performance Working Group) | 已有稳定实现: |
开发中的技术
无论是否打包,用户都依靠各种元数据(名称、图标)在常用应用列表中来识别他们想要使用的应用。Web应用清单规范允许开发人员将所有这些元数据放在一个 JSON 文件中。
Service Workers 规范描述了一种方法,该方法使应用能够利用持久的后台处理,为离线运行应用打开了大门。
Service Workers 不仅可以使 Web 应用在离线或网络条件较差的情况下无缝地脱机工作,它还创建了一个模型可以使 Web 应用在浏览器窗口未打开,或者浏览器本身未运行时也能进行操作。这种能力为在后台运行 Web 应用打开了大门,并且可以对远程触发的事件作出反应。
推送 API 使 Web 应用能够订阅远程通知,并在接收到后唤醒应用。长期以来,原生应用受益于这些通知带来的更多的用户参与。
Web 后台同步规范建立在 Service Workers 之上,通过在后台运行网络操作,使 Web 应用能够无缝地保持用户数据的最新状态,从而适应用户在移动设备上可能经常遇到的不可靠的连接。
探索性工作
Web 打包文档描述了用于网站和应用的新包格式的用例,并概述了这种格式。
在移动设备上运行的应用可以通过不同的状态,从运行到空闲、暂停、停止、丢弃或终止。这些状态之间的转换由底层操作系统触发,并从 Web 应用中隐藏。Web 生命周期方案旨在向应用公开状态转换,以便这些应用能够保持/恢复状态、启用/禁用网络等。
分享操作是移动设备上通过跨应用边界传递内容的常见范例,例如将URL或图像发布到自己最喜欢的社交网络应用中。Web分享API建议允许Web应用将文本、链接和其他内容分享到用户选择的任意目的地。API是Web Intents提案的一个更有针对性的版本,它在2012年被放弃,部分原因是它的一般性引发了用户体验问题。
Web分享目标API建议允许Web应用在其应用清单中声明其可接收来自其他应用的内容。这允许用户选择安装的Web应用在分享菜单中被其他本地应用列出。
用户代理会限制 Web 应用在后台执行操作的能力,使应用可以执行的操作的控制权掌握在用户手中。Web预算API开发了一种机制,通过该机制,应用可以确定可在后台运行操作的成本和预算,从而允许他们决定是执行还是推迟这些操作。各种参数可能影响操作的成本,包括设备是否使用电池电源以及设备所连接的网络类型等。
特性 | 规范 / 小组 | 实现意向选择浏览器… |
---|---|---|
打包 | Web 打包 (Web Packaging) Web 平台孵化社区组 (Web Platform Incubator Community Group) | |
状态转换 | Web 生命周期 (A Lifecycle for the Web) Web 平台孵化社区组 (Web Platform Incubator Community Group) | |
内容分享 | Web 分享 API (Web Share API) Web 平台孵化社区组 (Web Platform Incubator Community Group) | |
Web 分享目标 API (Web Share Target API) Web 平台孵化社区组 (Web Platform Incubator Community Group) | ||
后台执行 | Web 预算 API (Web Budget API) Web 平台孵化社区组 (Web Platform Incubator Community Group) |
不再进行的工作
- 应用缓存
- 应用缓存机制是在HTML5中引入的。通过一个缓存清单,浏览器能够知道哪些文件需要被保留在缓存中,从而允许脱机访问Web应用。该特性已经被所有的主流浏览器实现,但存在安全问题,而且开发人员对缓存的控制极其有限,所以该功能在HTML 5.1中已不推荐使用,并于HTML 5.2中删除。Service Workers规范定义了一种更加强大的替代方法。
- 任务调度
- 任务调度 API 可以通过与 Web 应用关联的 service worker 在指定的时间触发任务。该规范属于现在已经关闭的系统应用工作组(System Applications Working Group)的范围,因此被搁置了。
- 地理围栏 API
- 地理围栏 API 可以在设备进入指定的地理区域时唤醒Web应用。这项工作已经停止,部分原因在于未能找到一种很好的方法来解决有关隐私的权限问题,还因为该 API 依赖于当时还不稳定的 Service Workers。该规范的工作可能会在未来继续,这取决于潜在的实现者的兴趣。