2011-07-21 30 views
45

इस ब्लॉग पोस्ट को पढ़ने के बाद: http://www.sitepoint.com/javascript-shared-web-workers-html5/HTML5 में साझा वर्कर और वर्कर के बीच क्या अंतर है?

मुझे यह नहीं मिला। Worker और SharedWorker के बीच क्या अंतर है?

+0

http://www.whatwg.org/specs/web-apps/current-work/complete/workers.html#shared-workers-introduction –

उत्तर

24

बहुत बुनियादी भेद: Worker केवल इसे बनाए गए स्क्रिप्ट से एक्सेस किया जा सकता है, SharedWorker उसी डोमेन से आने वाली किसी भी स्क्रिप्ट द्वारा एक्सेस किया जा सकता है।

+4

उम्म, इसलिए 'window.open' के माध्यम से पॉपअप पर 'SharedWorker' अन्य लोगों को यह समझने में सहायता कर सकता है कि वे एक ही मूल पर हैं? क्या होगा यदि वे पूरी तरह से नए टैब पर हैं, तो मुझे नहीं लगता? – Tower

+3

@ टावर "वही उत्पत्ति" के पास उस पृष्ठ के साथ कुछ लेना देना नहीं है जिसने एक और पृष्ठ बनाया है। इसका मतलब है (मोटे तौर पर) डोमेन नाम जहां से स्क्रिप्ट को बुलाया गया था। [यह चार्ट] देखें (https: //developer.mozilla।संगठन/एन-यूएस/डॉक्स/वेब/जावास्क्रिप्ट/Same_origin_policy_for_JavaScript # Definition_of_an_origin)। तो 'example.com' पर दोनों स्क्रिप्ट, अलग-अलग टैबों में भी' साझावर्कर 'तक पहुंच सकते हैं। – rvighne

+0

तो, क्या इसका मतलब है कि एक नियमित वेबवर्कर के पास केवल एक कनेक्शन हो सकता है भले ही उपयोगकर्ता एक ही डोमेन से एक ही स्क्रिप्ट चलाने वाले टैब को डुप्लिकेट करता है? या फिर भी ब्राउज़र द्वारा एक ही स्क्रिप्ट माना जाता है? दूसरे शब्दों में, app.js worker.js से कनेक्ट होता है, तो उपयोगकर्ता अपने टैब को दोहराता है: क्या टैब 2 अभी भी worker.js से कनेक्ट हो सकता है? क्या वर्कर.जेएस अभी भी टैब 1 के ऐप.जेएस और टैब 2 के ऐप.जेएस के बीच एक ही मेमोरी पूल बनाए रखेंगे। मुझे रूचि है क्योंकि मुझे पृष्ठभूमि-प्रक्रिया/डेमॉन में एक कतार संरचना को बनाए रखने की आवश्यकता है और उसी एप्लिकेशन में किसी भी खुले टैब से ऐसे डिमन को ईवेंट पोस्ट करना होगा। – Cody

9

शेयर्डवर्कर के पास अधिक कार्यक्षमता है तो कार्यकर्ता।

कि कार्यक्षमता के अलावा है:

  • एक वैश्विक गुंजाइश साझा की है। सभी SharedWorker उदाहरण एक वैश्विक दायरे साझा करते हैं।

W3C युक्ति:

WHATWG युक्ति:

+0

क्या साझा करने के लायक हो सकता है क्या साझावर्कर के पास "प्रसंस्करण शक्ति" भी अधिक है? – Pacerier

6

एक साझा कर्मचारी एकाधिक कनेक्शन के साथ काम कर सकता है। यह विभिन्न स्क्रिप्ट के बीच संचार की अनुमति देने के लिए बंदरगाहों को संदेश पोस्ट करता है।

दूसरी ओर एक समर्पित कार्यकर्ता बस अपने मुख्य कनेक्शन से जुड़ा हुआ है और अन्य स्क्रिप्ट (श्रमिकों) को संदेश पोस्ट नहीं कर सकता है।

+0

तो, क्या इसका मतलब है कि एक नियमित वेबवर्कर के पास केवल एक कनेक्शन हो सकता है भले ही उपयोगकर्ता एक ही डोमेन से एक ही स्क्रिप्ट चलाने वाले टैब को डुप्लिकेट करता है? या फिर भी ब्राउज़र द्वारा एक ही स्क्रिप्ट माना जाता है? दूसरे शब्दों में, app.js worker.js से कनेक्ट होता है, तो उपयोगकर्ता अपने टैब को दोहराता है: क्या टैब 2 अभी भी worker.js से कनेक्ट हो सकता है? क्या वर्कर.जेएस अभी भी टैब 1 के ऐप.जेएस और टैब 2 के ऐप.जेएस के बीच एक ही मेमोरी पूल बनाए रखेंगे। मुझे रूचि है क्योंकि मुझे पृष्ठभूमि-प्रक्रिया/डेमॉन में एक कतार संरचना को बनाए रखने की आवश्यकता है और उसी एप्लिकेशन में किसी भी खुले टैब से ऐसे डिमन को ईवेंट पोस्ट करना होगा। – Cody

5

साझावर्कर का उपयोग करने पर विचार करने वाले किसी भी व्यक्ति को - ऐप्पल ने 2015 में वेबकिट से SharedWorker का समर्थन हटा दिया। उनके current roadmap में पुन: कार्यान्वयन की कोई योजना नहीं है। Service Workers के लिए समर्थन वर्तमान में वेबकिट के लिए विकास में है और इसी तरह की क्षमताओं की पेशकश करता है (see here for comparisons)।

आप ServiceWorkers in WebKit here के विकास (उर्फ सफारी समर्थन) का पालन कर सकते हैं।

+0

इसका क्या अर्थ है? ऐप्पल शेयरवर्कर्स का समर्थन नहीं कर रहा है? – Pacerier

+0

इसका मतलब है कि ऐप्पल वेबकिट ने [चेंजसेट 178310] (https://trac.webkit.org/changeset/178310/webkit) के रूप में SharedWorkers का समर्थन हटा दिया है और उनके समर्थन को पुन: प्रस्तुत करने की योजना नहीं बना रहा है। – charliebeckwith

संबंधित मुद्दे