那些希望他们的 Web 应用能够更像原生应用的开发者们即将会多一种选择: Service Workers 。service worker 是运行于浏览器后台的一种脚本,它可以无需 Web 页面或者用户交互就能提供额外的功能。
现在 service worker 的最佳使用场景是提供离线能力。开发人员可以注册一个 service worker 作为网络代理提供网络拦截。即使没有可用的网络时,这个代理也能够对缓存的数据和资源或者是已经生成的内容作出响应。在 2014 年的 Chrome 大会上,Alex Russell演示了基于Web 的手机App 如何使用这个功能来提供完全的离线能力。
和现有的HTML5 数据缓存功能有很大的不同,service worker 的离线能力是可编程的。Russell 称它是一个:“让你做出选择去做哪些事的、可编程的、浏览器内置的代理”。由于service worker 运行于后台,它和当前的Web 页面完全独立,所以将来会有后台同步、推送通知等功能,虽然目前还不具备。
谷歌开发者、倡导者Matt Gaunt 在其对service worker 的介绍中提供了一份开发指南,其中包括如何开发一个基础的service worker 的教程以及一些注意事项。
Google、Mozilla 和 Opera 都已经在开发这个功能,大家对 IE 上提供此功能的呼声也甚高,微软已经表示他们正在考虑此事。苹果尚未表态Safari 浏览器是否对其提供支持。
一般情况下,Chrome 将在V40 版本中正式提供Service worker,不过现在开发者已经可以通过 Chrome 的 Beta 版本来提前试用了。Jake Archibald 在 Github 上维护了一个资源列表,大家可以在上面找到更多的相关信息和标准。
查看英文原文: Service Workers Promise to Make Web Apps Feel Native
感谢夏雪对本文的审校。
给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。
评论