从 2013 年初开始,Mozilla 的开发者们就参与了 Service Worker 的设计。感谢 Google、三星、Mozilla 以及其他组织的努力,这个激动人心的 Web 平台新功能已经发展到被各种 Web 浏览器引擎所实现的程度。
什么是 Service Workers?
简单来说,Service Workers 是充当网页客户端代理的脚本。JavaScript 代码可以拦截网络请求,提供制造的响应,并根据应用程序的独特需求执行细粒度的缓存,这是 Web 平台以前所缺乏的功能。这种强大功能的提供让 Web 开发人员能够实现诸如创建完整离线体验等功能。Jake Archibald 在 他的博客文章 中总结了一些这些功能。
由于 Service Workers 在“后台”运行,因此它们为 Web 开辟了许多以前仅在原生平台上可用的可能性。除了基本规范提供的网络功能外,Service Workers 还旨在被 Push API 和 Background 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 上写博客。当他不去远足、攀岩或读书时,你可能会发现他在工作。
关于 Andrew Overholt
Andrew 是 Mozilla DOM 团队的工程经理。
关于 Robert Nyman [名誉编辑]
技术布道师 & Mozilla Hacks 编辑。发表关于 HTML5、JavaScript 和开放 Web 的演讲和博客文章。Robert 坚定地相信 HTML5 和开放 Web,自 1999 年以来一直在从事 Web 前端开发工作,在瑞典和纽约市都工作过。他经常在 http://robertnyman.com 上写博客,热爱旅行和结识新朋友。
4 条评论