看完此博客後: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 –