看完此博客后:http://www.sitepoint.com/javascript-shared-web-workers-html5/HTML5中的共享工作者和工作者有什么区别?
我不明白。 Worker
和SharedWorker
之间有什么区别?
看完此博客后:http://www.sitepoint.com/javascript-shared-web-workers-html5/HTML5中的共享工作者和工作者有什么区别?
我不明白。 Worker
和SharedWorker
之间有什么区别?
非常基本的区别:只能从创建它的脚本访问Worker
,可以通过来自同一个域的任何脚本访问SharedWorker
。
恩,所以''SharedWorker'通过'window.open'弹出窗口可以访问其他人假设他们在同一个来源?如果他们在一个全新的选项卡上,我猜不是? – Tower
@Tower“同源”与产生另一页的页面无关。这意味着(粗略地)从脚本的调用位置开始的域名。请参阅[此图表](https://developer.mozilla。org/en-US/docs/Web/JavaScript/Same_origin_policy_for_JavaScript#Definition_of_an_origin)。因此,两个'example.com'上的脚本都可以通过不同的标签访问同一个'SharedWorker'。 – rvighne
那么,这是否意味着即使用户复制了从同一个域运行相同脚本的选项卡,常规WebWorker也只能有一个连接?或者仍然被浏览器视为相同的脚本?换句话说,app.js连接到worker.js,然后用户复制他们的标签:can tab2仍然连接到worker.js? worker.js是否仍然在tab1的app.js和tab2的app.js之间保持相同的内存池。我很感兴趣,因为我需要在后台进程/守护进程中维护队列结构,并将事件从同一应用程序中的任何打开的选项卡发布到此守护进程。 – Cody
SharedWorker似乎有更多的功能,然后工人。
其中该功能是:
SharedWorker
实例共享一个全局范围。W3C规格:
WHATWG规格:
SharedWorker是否还具有更多“处理能力”? – Pacerier
共享工作人员可以使用多个连接。它将消息发布到端口以允许在各种脚本之间进行通信。
另一方面,一个专门的工作人员只是与其主要连接关联,不能将消息发布到其他脚本(工作人员)。
那么,这是否意味着即使用户复制了从同一个域运行相同脚本的选项卡,常规WebWorker也只能有一个连接?或者仍然被浏览器视为相同的脚本?换句话说,app.js连接到worker.js,然后用户复制他们的标签:can tab2仍然连接到worker.js? worker.js是否仍然在tab1的app.js和tab2的app.js之间保持相同的内存池。我很感兴趣,因为我需要在后台进程/守护进程中维护队列结构,并将事件从同一应用程序中的任何打开的选项卡发布到此守护进程。 – Cody
对于任何使用SharedWorker考虑 - 苹果公司在2015年从取出的WebKit支持SharedWorker
在他们current roadmap没有用于重新实施的计划。目前正在为WebKit开发支持Service Workers,并提供类似的功能(see here for comparisons)。
您可以关注ServiceWorkers in WebKit here的开发(也称为Safari支持)。
这是什么意思?苹果不支持共享工作者? – Pacerier
这意味着Apple WebKit从[Changeset 178310](https://trac.webkit.org/changeset/178310/webkit)删除了对SharedWorkers的支持,并且不打算重新引入其支持。 – charliebeckwith
值得检查http://www.whatwg.org/specs/web-apps/current-work/complete/workers.html#shared-workers-introduction –