浏览器 worker

Posted 风来了

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浏览器 worker相关的知识,希望对你有一定的参考价值。

  1. Dedicated Worker:专用的 worker,只能被创建它的 JS 访问,创建它的页面关闭,它的生命周期就结束了。
  2. Shared Worker:共享的 worker,可以被同一域名下的 JS 访问,关联的页面都关闭时,它的生命周期就结束了。
  3. ServiceWorker:是事件驱动的 worker,生命周期与页面无关,关联页面未关闭时,它也可以退出,没有关联页面时,它也可以启动,

这三者有什么区别呢?众所周知,JShted 的执行线程,同一时刻内只会有一段代码在执行。Web worker 目的是为 JS 是单线程的,即一个浏览器进程中只有一个 JS 创造多线程环境,允许主线程将一些任务分配给子线程。Web Worker 一般是用于在后台执行一些耗时较长的 JS,避免影响 UI 线程的响应速度。

Dedicated worker 或 shared worker 最主要的能力,一是后台运行 JS,不影响 UI 线程,二是使用消息机制实现并行,可以监听 onmessage 事件。所以 dedicated worker 和 shared worker 专注于解决“耗时的 JS 执行影响 UI 响应”的问题,而 service worker 则是为解决“Web App 的用户体验不如 Native App”的普遍问题而提供的一系列技术集合,必然部分处理逻辑会牵扯到 UI 线程,从而在启动 service worker 的时候,UI 线程的繁忙也会影响其启动性能。

 

 

原文:UC 内核发布 

以上是关于浏览器 worker的主要内容,如果未能解决你的问题,请参考以下文章

一句话总结Web worker,Service worker和worklet

一句话总结Web worker,Service worker和worklet

浏览器中的 Web Worker 支持

转载古典浏览器缓存和Service Worker对比

Web Worker 案例

electron使用new Worker写入文件导致浏览器崩溃