Service Workers 和 Firefox

从 2013 年初开始,Mozilla 的开发者们就参与了 Service Worker 的设计。感谢 Google、三星、Mozilla 以及其他组织的努力,这个激动人心的 Web 平台新功能已经发展到被各种 Web 浏览器引擎所实现的程度。

什么是 Service Workers?

简单来说,Service Workers 是充当网页客户端代理的脚本。JavaScript 代码可以拦截网络请求,提供制造的响应,并根据应用程序的独特需求执行细粒度的缓存,这是 Web 平台以前所缺乏的功能。这种强大功能的提供让 Web 开发人员能够实现诸如创建完整离线体验等功能。Jake Archibald 在 他的博客文章 中总结了一些这些功能。

由于 Service Workers 在“后台”运行,因此它们为 Web 开辟了许多以前仅在原生平台上可用的可能性。除了基本规范提供的网络功能外,Service Workers 还旨在被 Push APIBackground Sync API 用于向 Web 应用程序传递来自用户代理的消息。

Firefox 中的 Service Workers

许多 Mozilla 开发人员一直在努力在 Gecko 中实现 Service Workers,同时 Anne van Kesteren 和 Jonas Sicking 帮助进行设计和规范。来自 Necko 团队和其他人员从网络和相关角度提供了意见。Nikhil Marathe 最近发布了一篇关于 Service Workers 在 Gecko 中的状态 的博客文章。

Gecko 中的 Service Worker 实现正在分批落地,只要它们完成并经过审查,就会立即落地。目前,由于规范继续走向稳定,以及其他实现(特别是 Blink 的实现)的进展,Gecko 中的所有功能都在 dom.serviceWorkers.enabled 首选项的控制之下,该首选项默认设置为 false,但在 about:config 中可以切换。

我们的计划是,Web 开发人员很快就能在 Firefox 夜间版 中使用大多数 Service Worker 功能,前提是将上述首选项切换为 true。再好的计划也可能会被推迟,但我们希望最晚在 2014 年 9 月底实现这一点。

Service Worker 实现的状态

不可多得的 Jake Archibald 写了一个工具,可以轻松地查看 Service Worker 实现的状态。你可以通过 元 bug 关注 Gecko 实现的进展。

关于 Nikhil Marathe

Nikhil 是 Mozilla 的平台工程师。他喜欢技术写作,曾撰写过“libuv 入门”一书,并在 http://blog.nikhilism.com 上写博客。当他不去远足、攀岩或读书时,你可能会发现他在工作。

更多 Nikhil Marathe 的文章…

关于 Andrew Overholt

Andrew 是 Mozilla DOM 团队的工程经理。

更多 Andrew Overholt 的文章…

关于 Robert Nyman [名誉编辑]

技术布道师 & Mozilla Hacks 编辑。发表关于 HTML5、JavaScript 和开放 Web 的演讲和博客文章。Robert 坚定地相信 HTML5 和开放 Web,自 1999 年以来一直在从事 Web 前端开发工作,在瑞典和纽约市都工作过。他经常在 http://robertnyman.com 上写博客,热爱旅行和结识新朋友。

更多 Robert Nyman [名誉编辑] 的文章…


4 条评论

  1. Filip Bech-Larsen

    以上内容对 Firefox OS 有什么影响?

    2014 年 6 月 26 日 凌晨 00:34

    1. Nikhil

      大多数功能将在 Firefox OS 中同时与 Firefox 桌面版一起提供。目前我们还没有明确的计划,但一些 API 可能暂时被禁用,以便我们在硬件受限的设备上获得更好的性能。

      2014 年 6 月 27 日 上午 11:17

  2. Ivan Dejanovic

    我费了好大劲才弄懂应用程序缓存,现在你又用 Service Worker 颠覆了它。:)

    说正经的。我在几个地方看到,Service Worker 将取代应用程序缓存,成为为 Web 应用程序提供离线功能的工具。不幸的是,由于忙于其他工作,我还没能尝试 Service Worker。作为 Web 和 Firefox OS 开发人员,这会对我有什么影响?我已经在 Firefox 应用商店发布了一个应用,还有两个应用已完成 95%。这三个应用都使用应用程序缓存来支持离线功能。

    它们在将来还能照常工作吗,还是需要修改?应用程序缓存的计划是什么?会被弃用吗?由于 Service Worker 还没有得到完全支持,而应用程序缓存已在所有主流浏览器中实现,那么我应该在未来的应用中使用什么?非夜间版 Firefox 何时会提供这项功能?

    感谢你们为我们所做的一切。

    2014 年 6 月 26 日 上午 06:49

    1. Nikhil

      Gecko 目前没有计划弃用或删除应用程序缓存,因此如果您需要,可以继续使用它。Service Workers 的目的是让您能够更细粒度、更易于理解地控制离线机制。

      如上所述,如果一切顺利,我们打算在 9 月底之前完成大多数部分,这样它们将在年底之前出现在发行版中。

      2014 年 6 月 27 日 上午 11:21

本文评论已关闭。