Javascript 什么';HTML5中共享工作者和工作者的区别是什么?

Javascript 什么';HTML5中共享工作者和工作者的区别是什么?,javascript,html,web-worker,Javascript,Html,Web Worker,读完这篇博文后: 我不明白。工作者和共享工作者之间有什么区别?共享工作者似乎比工作者拥有更多的功能 这些功能包括: 共享的全局范围。所有SharedWorker实例共享一个全局范围 W3C规范: 什么样的规格: 共享工作者可以使用多个连接。它将消息发布到端口,以允许各种脚本之间的通信 另一方面,一个专用的工作程序只与它的主连接绑定,不能向其他脚本(工作程序)发布消息。非常基本的区别:只能从创建它的脚本访问工作程序,SharedWorker可以被来自同一域的任何脚本访问。对于任何

读完这篇博文后:


我不明白。
工作者
共享工作者
之间有什么区别?

共享工作者似乎比工作者拥有更多的功能

这些功能包括:

  • 共享的全局范围。所有
    SharedWorker
    实例共享一个全局范围
W3C规范:

什么样的规格:


共享工作者可以使用多个连接。它将消息发布到端口,以允许各种脚本之间的通信


另一方面,一个专用的工作程序只与它的主连接绑定,不能向其他脚本(工作程序)发布消息。

非常基本的区别:只能从创建它的脚本访问
工作程序,
SharedWorker
可以被来自同一域的任何脚本访问。

对于任何考虑使用SharedWorker的人,苹果公司在2015年从WebKit中删除了对
SharedWorker
的支持。在他们的报告中,没有重新实施的计划。目前正在为WebKit开发对的支持,并提供类似的功能()


您可以遵循.

Shared worker allow all front page上下文脚本的开发(即Safari支持),该脚本调用构造函数:new SharedWorker(“path to Shared worker file.js”),以共享在后台上下文中运行的共享工作者文件的同一实例(后面运行javascript的另一个线程)

例如,当网页#1调用该构造函数时,如果发现后面还没有加载共享工作进程,它将导致后台上下文下载并加载该文件,然后当网页#2调用同一构造函数(同一文件路径)时,它发现有一个现有的共享工作进程正在运行,它将只使用相同的一个。当调用worker.port.start()函数时,它将导致调用shared worker file onconnect事件处理程序来注册调用方并获取句柄以与客户端端口进行通信(例如,用于postMessage back)


但是,worker,上面的每个网页都会在每个首页的后台加载一个worker文件,而不是共享同一个worker.js实例。

可能值得在Umm上查看,因此通过
窗口弹出的
SharedWorker
可以访问其他人,假设他们在同一来源?如果他们在一个全新的标签上,我想不会吧?@Tower“同源”与生成另一个页面的页面无关。它的意思是(大致上)调用脚本的域名。看见因此,两个脚本,都在
example.com
,甚至可以跨不同的选项卡访问相同的
SharedWorker
。那么,这是否意味着一个普通的WebWorker只能有一个连接,即使用户从同一域复制运行相同脚本的选项卡?或者浏览器仍然认为这是同一个脚本?换句话说,app.js连接到worker.js,然后用户复制他们的选项卡:tab2还能连接到worker.js吗?worker.js是否仍会在tab1的app.js和tab2的app.js之间保持相同的内存池。我之所以感兴趣,是因为我需要在后台进程/守护进程中维护队列结构,并从同一应用程序中任何打开的选项卡向此类守护进程发布事件。SharedWorker是否也有更多的“处理能力”?这意味着什么?Apple不支持sharedworkers?这意味着Apple WebKit从开始就取消了对sharedworkers的支持,并且不打算重新引入他们的支持。什么?苹果想成为新的internet explorer吗?@JohnBalvinArias-Apple/Safari已经成为新的internet explorer有一段时间了太棒了!这里有一个链接显示了对
SharedWorker
的(较差)支持。那么,这是否意味着即使用户从同一域复制了运行相同脚本的选项卡,普通WebWorker也只能有一个连接?或者浏览器仍然认为这是同一个脚本?换句话说,app.js连接到worker.js,然后用户复制他们的选项卡:tab2还能连接到worker.js吗?worker.js是否仍会在tab1的app.js和tab2的app.js之间保持相同的内存池。我之所以感兴趣,是因为我需要在后台进程/守护进程中维护队列结构,并从同一应用程序中任何打开的选项卡向此类守护进程发布事件。我不明白(尽管这个答案可能已经有8年历史了)。您可以将多个
MessagePort
对象传输到
Worker
并连接整个连接网络、与其他Worker通信的Worker、iframe、worklet等。