वेब वर्कर्स के लिए उपयोग-मामले क्या हैं? [बन्द है]


174

मैं वेब वर्कर्स एपीआई का उपयोग करने के लिए वास्तविक दुनिया की खोज में हूं ।


क्या वे मोबाइल / वेबकिट प्लेटफार्मों द्वारा समर्थित हैं?
DMP

यकीन के लिए पता नहीं है, लेकिन लगता है कि वे कर रहे हैं।
सेर्गेई इलिंस्की

6
@danp ब्राउज़र समर्थन: caniuse.com/webworkers
धीरज वेपकोमा

1
मैंने एक मामला लिखा, जहां हमने पहली बार एक वेब कर्मचारी का इस्तेमाल किया, फिर निर्धारित किया कि हम इसके बिना बेहतर हैं - windward.net/blogs/web-workers-abandon/#.Vl3QdXarQ-U
डेविड थिएलेन

जवाबों:


143
  • जॉन रेजिग (jQuery की प्रसिद्धि का) यहाँ वेब कर्मचारियों का उपयोग करने के दिलचस्प उदाहरणों का एक गुच्छा है - खेल, ग्राफिक्स, क्रिप्टो।

  • एक अन्य उपयोग वेब I / O है - दूसरे शब्दों में, पृष्ठभूमि में URL को मतदान करना। इस तरह से आप यूआई को मतदान के परिणाम की प्रतीक्षा में अवरुद्ध नहीं करते हैं।

  • एक और व्यावहारिक उपयोग: Bespin में, वे सिंटैक्स हाइलाइटिंग करने के लिए वेब वर्कर्स का उपयोग कर रहे हैं, जिसे आप ऐप का उपयोग करते समय अपने कोड संपादन को ब्लॉक नहीं करना चाहेंगे

  • से मोज़िला : एक तरह से श्रमिकों उपयोगी है अपने कोड यूजर इंटरफेस धागा को रोके बिना प्रोसेसर गहन गणना करने के लिए अनुमति देने के लिए कर रहे हैं।

    एक व्यावहारिक उदाहरण के रूप में, एक ऐसे ऐप के बारे में सोचें, जिसमें # की एक बड़ी तालिका हो (यह वास्तविक दुनिया है, BTW - एक ऐप से लिया गया है जिसे मैंने 2 साल पहले क्रमादेशित किया था)। आप इनपुट फ़ील्ड के माध्यम से एक तालिका में एक # बदल सकते हैं और विभिन्न स्तंभों में अन्य संख्याओं का एक गुच्छा एक काफी गहन प्रक्रिया में पुन: गणना कर सकते हैं।

    पुराना वर्कफ़्लो था: # बदलें। जा कॉफ़ी प्राप्त करें जबकि अन्य नंबरों में परिवर्तन के माध्यम से जावास्क्रिप्ट क्रंच करता है और वेब पेज 3 मिनट के लिए अनुत्तरदायी है - जब मैंने इसे नरक और पीठ पर अनुकूलित किया। कॉफी के साथ वापस जाओ। एक दूसरा # बदलें। कई बार दोहराएं। SAVE बटन पर क्लिक करें।

    श्रमिकों के साथ नया वर्कफ़्लो हो सकता है: # बदलें। एक स्थिति संदेश प्राप्त करें कि कुछ को फिर से जोड़ा जा रहा है लेकिन आप अन्य # को बदल सकते हैं। और # बदलो। जब परिवर्तन किया जाता है, तब तक प्रतीक्षा करें जब तक स्थिति में परिवर्तन नहीं होता है, "सभी गणना पूरी हो जाती है, अब आप अंतिम # समीक्षा कर सकते हैं और बचा सकते हैं"।


5
महान लिंक! मैंने वर्कर्स के बारे में कभी नहीं सुना था ... एमएमएम, वर्कर्स। (एक लंबा, गर्म स्नान करने के लिए जाने का समय ...)
पीटर रोवेल

51
मुझे पता है कि यह एक दो साल पुराना उत्तर है, लेकिन मैं सिर्फ यह उल्लेख करना चाहता था कि आपको आइटम # 2 (मतदान URL) के लिए वेब वर्कर्स की आवश्यकता नहीं होनी चाहिए। XHR एसिंक्रोनस रूप से होता है और ब्लॉक नहीं करता है; अलग थ्रेड पर XHR अनुरोधों को चलाने की कोई आवश्यकता नहीं है। (निश्चित रूप से, एक आधुनिक ऐप में आप मतदान के बजाय WebSockets का उपयोग करना चाहते हैं।)
josh3736

6
@ josh3736 - आप सही हैं लेकिन मैं अब उत्सुक हूं कि क्या कई समानांतर XHR aync अनुरोध करने से किसी तरह ब्राउज़र को दुखी किया जा सकता है? इसके अलावा, आपको XHR प्रतिक्रियाओं को संसाधित करने के लिए स्थानीय संसाधनों की आवश्यकता होती है जहां कर्मचारी उपयोगी हो सकते हैं।
DVK

यदि सभी समान अनुरोध एक ही सर्वर पर हैं, तो आप प्रति-होस्टनाम सीमा को 2 और 9 समवर्ती कनेक्शनों के बीच कहीं मार देंगे । (मुझे लगता है कि यह सीमा सभी कनेक्शनों पर लागू होती है , चाहे मुख्य सूत्र या एक कार्यकर्ता से शुरू की गई हो।) बेशक, यदि आपके पास एक समय में 10 समवर्ती अनुरोध चल रहे हैं, तो आपको संभवतः अपने आवेदन के डिज़ाइन पर पुनर्विचार करने की आवश्यकता है।
josh3736

2
मेरे साधारण प्रश्न को क्षमा करें, लेकिन ऊपर दिए गए उदाहरण में आप "#" के रूप में क्या संदर्भित करते हैं?
Shrewdbeans

35

मैंने उन्हें ब्राउज़र से सर्वर तक बड़ी मात्रा में डेटा भेजने के लिए उपयोग किया है। जाहिर है, आप इसे नियमित AJAX कॉल के साथ कर सकते हैं, लेकिन यदि यह प्रति होस्टनाम में से एक कीमती कनेक्शन लेता है। इस प्रक्रिया के दौरान यदि उपयोगकर्ता पृष्ठ परिवर्तन करता है (उदाहरण के लिए एक लिंक पर क्लिक करता है), तो पिछले पृष्ठ से आपके जावास्क्रिप्ट ऑब्जेक्ट चले जाते हैं और आप कॉलबैक की प्रक्रिया नहीं कर सकते। जब एक वेब कर्मचारी का उपयोग किया जाता है, तो यह गतिविधि बैंड से बाहर हो जाती है, इसलिए आपके पास बेहतर गारंटी है कि यह पूरा हो जाएगा।


2
लेकिन आपको वेब-वर्कर के साथ संदेश का आदान-प्रदान करना होगा। जब इस ऑपरेशन की लागत लाभ की हकदार है?
डैनियलो 1515

6

एक और प्रयोग मामला:

पृष्ठभूमि में संपीड़ित / डी-कम्प्रेसिंग फाइलें, यदि आपके पास बहुत सारी छवियां और अन्य मीडिया फाइलें हैं जो संपीड़ित प्रारूप में सर्वर से एक्सचेंज की जाती हैं।


39
यह जावास्क्रिप्ट में नहीं होना चाहिए। छवि डेटा को कुशलतापूर्वक संपीड़ित करने के लिए डिज़ाइन किए गए एल्गोरिदम का उपयोग करके छवियां पहले से संपीड़ित (पीएनजी, जेपीईजी) हैं। शीर्ष पर संपीड़न की एक और परत फेंकने से वास्तव में डेटा का आकार बढ़ सकता है । अन्य प्रकार के डेटा (उदाहरण के लिए एक बड़ी JSON फ़ाइल) के लिए, संपीड़न को मानक HTTP gzipping का उपयोग करके ब्राउज़र द्वारा नियंत्रित किया जाना चाहिए। यदि आप जावास्क्रिप्ट में संपीड़न कर रहे हैं, तो आप शायद इसे गलत कर रहे हैं
josh3736

11
मैं कुछ उपयोगकर्ताओं को उपयोग के मामले में अयोग्य घोषित करता हूं, लेकिन यहां मेरा कहने का मतलब है। एमएस शब्द की तरह एक एप्लिकेशन पर विचार करें, एक शक्तिशाली दस्तावेज़ संपादक की तरह जिसके माध्यम से आप छवियों, संगीत फ़ाइलों, डेटा, एक्सेल शीट आदि को एक फ़ाइल में एम्बेड कर सकते हैं। और विचार करें कि आपके पास एक वेब आधारित क्लाइंट और एक डेस्कटॉप क्लाइंट और एक IOS / Android क्लाइंट है। इस तरह के उपयोग के मामले के लिए, आप सभी फ़ाइल सामग्री को ज़िप फ़ाइल में संग्रहीत कर सकते हैं और फिर प्रत्येक क्लाइंट पर अनज़िप कर सकते हैं।
sbr

3
Instapaper बुकमार्कलेट सर्वर पर भेजने से पहले सहेजे जा रहे पृष्ठ को संपीड़ित करता है। यह समय और बैंडविड्थ बचाता है।
स्टेवेंडिलियल्स

12
@ josh3736 ब्राउज़र केवल एक चीज़ कर सकता है जो वेब सर्वर (या ब्राउज़र कैश) से एक फ़ाइल को गनीज़ कर सकता है। यह स्थानीय भंडारण से डेटा को डिकम्पोज नहीं कर सकता है, न ही किसी वेबसैट से, और यह बिल्कुल भी संपीड़ित नहीं कर सकता है। वेब एप्लिकेशन डेटा की बढ़ती मात्रा को बढ़ा रहे हैं, और इसके लिए संपीड़न अत्यंत उपयोगी है। एक साल पहले समान रूप से मान्य जब यह पोस्ट किया गया था: यदि आप जावास्क्रिप्ट संपीड़न के लिए किसी भी वैध उपयोग के मामलों के बारे में नहीं सोच सकते हैं, तो आपको शायद कल्पना की कमी है।
एड्रिया

1
@ एड्रिया: वेबसोकेट मानक संपीड़न समर्थन को जोड़ने की प्रक्रिया में है । यदि आप ब्राउज़र में उत्पन्न छवियों के साथ काम कर रहे हैं ( <canvas>), तो आप एक संकुचित प्रारूप (यानी पीएनजी) में छवि डेटा प्राप्त कर सकते हैं। मेरी बात यह नहीं थी कि जेएस में संपीड़ित करना कभी भी उचित नहीं है; मेरा कहना था कि ज्यादातर मामलों में , यह नहीं है , और ज्यादातर मामलों के लिए - विशेष रूप से छवियों से निपटना, जो कि इस उत्तर के बारे में बात करता है - अपने स्वयं के संपीड़न को रोल करने का एक बेहतर विकल्प है।
josh3736
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.