阅读此博文后:http ://www.sitepoint.com/javascript-shared-web-workers-html5/
我不明白。aWorker
和 a 和有什么不一样SharedWorker
?
阅读此博文后:http ://www.sitepoint.com/javascript-shared-web-workers-html5/
我不明白。aWorker
和 a 和有什么不一样SharedWorker
?
非常基本的区别:aWorker
只能从创建它的脚本访问,aSharedWorker
可以由来自同一域的任何脚本访问。
SharedWorker 的功能似乎比 Worker 更多。
该功能包括:
SharedWorker
实例共享一个全局范围。W3C 规范:
WHATWG 规范:
对于任何考虑使用 SharedWorker 的人——AppleSharedWorker
在 2015 年取消了对 WebKit 的支持。在他们当前的路线图中,没有重新实施的计划。目前正在为 WebKit 开发对Service Worker的支持,并提供类似的功能(参见此处进行比较)。
您可以在此处关注 WebKit 中 ServiceWorkers的开发(也称为 Safari 支持)。
共享工作者可以处理多个连接。它将消息发布到端口以允许各种脚本之间的通信。
另一方面,专门的工作人员只是简单地绑定到其主连接,并且不能将消息发布到其他脚本(工作人员)。
共享工作者允许所有调用构造函数的首页上下文脚本:new SharedWorker("path-to-shared-worker-file.js") 共享在后台上下文中运行的共享工作者文件的同一实例(运行 javascript 的另一个线程在后面)。
例如,当网页#1调用该构造函数时,如果发现后面还没有加载共享工作者,它将导致后台上下文下载文件并加载它,然后当网页#2调用相同的构造函数时(相同的文件路径),它发现有一个现有的共享工作者正在运行,它将只使用同一个。当worker.port.start()函数被调用时,会导致共享worker文件onconnect事件处理程序被调用来注册调用者并获取与客户端端口通信的句柄(例如postMessage返回)。
但是worker,上面的每个网页都会在后台为每个单独的首页加载一个worker文件,而不是共享同一个worker.js实例。