service-worker

 https://kailian.github.io/2017/03/01/service-workerjavascript

 http://imweb.io/topic/56592b8a823633e31839fc01java

 

1、Service Worker的身份git

  Service的意思是服务,Worker的意思是工人,那么Service Worker的意思就是服务员。这个员工是2014年6月HTML5新招的实习生,目前在试用中。在此以前,已经有一位老员工,它叫Web Worker。那么问题来了,Boss是谁?Boss就是浏览器。准确来讲,每一个页面的javascript运行主线程都是一个Boss。github

  这里先谈一下大的背景。Boss很厉害,在页面上指点江山,呼风唤雨。但他有个局限:同一时刻只作一件事(单线程)。当一些很耗时的琐事让Boss去处理时,在处理的过程当中他就无暇顾及其它重要的事了。在用户看来,页面没人管了,Boss不干事了!这时Boss就很郁闷。为了保证Boss能处理更重要的事情,董事会(W3C)终于招聘了一个新员工:Web worker。这下,Boss终于能够从耗时的琐事中解放出来了,他只须要把Web worker叫过来讲:“这些事情拿去作,没作完不要来找我”。Web worker领到任务后默默地到本身的工位(线程)去干活,完成以后给Boss发了个邮件(postMessage)。Boss收到邮件(onmessage)后欣慰地点了点头。web

  扯了半天好像还没谈到新员工啊。。。不急,下面就讲到了。浏览器

  Boss下班了(页面关闭),Web worker也收拾东西回家了。这样执行了好久,直至2014年6月,董事会发现一个问题:“竟然没有人在老板下班后加班?”。因而,又招了一个专职加班的:Service Worker。它被赋予的绩效目标以下:缓存

  1. 入职(install)后永不下班,而能更新。
  2. 能处理Boss须要的资源(HTTPS请求),以便离线时也能让BOSS取到数据(从cache中)。
  3. 能向客户推送消息(push notifications)
  4. 不容许越权管理Boss的事(DOM ACCESS)

  总地来讲,Service worker是独立于页面的一个运行环境,它在页面关闭后仍能够运行。同时,也能对它负责的页面的网络请求进行截取和返回请求(相似于Fiddler)。服务器

 

二、webWorker和serviceWorker的区别?网络

  serviceworker是在webworker基础上实现的,它可认为是使用了webworker技术来处理网络请求、响应等方面的事务。 serviceWorker能够认为是一种改进后的webWorker。webworker作的是多线程,serviceworker则是用webworker作了个与网络请求相关封装,来监听一些网络事件。固然serviceworker也能够来作不少事情,例如离线缓存应用,甚至替代fiddler做为调试工具。 多线程

  Service Worker是继web Worker后又一个新的线程,这个线程比web worker独立得更完全,能够在页面没有打开的时候就运行。做为一个页面与服务器之间中间层,Service Worker能够捕获它所负责的页面的请求,并返回相应资源,这使离线web应用成为了可能。这也是Service Worker被提出的一个重要目的。

相关文章
相关标签/搜索