คำถามติดแท็ก web-worker

25
คนทำงานเว็บที่ไม่มีไฟล์ Javascript แยกต่างหาก?
เท่าที่ฉันสามารถบอกได้ผู้ทำงานเว็บต้องเขียนไฟล์ JavaScript แยกต่างหากและเรียกสิ่งนี้: new Worker('longrunning.js') ฉันใช้คอมไพเลอร์แบบปิดเพื่อรวมและย่อขนาดซอร์สโค้ด JavaScript ทั้งหมดของฉันและฉันไม่ต้องการให้คนงานของฉันแยกไฟล์เพื่อแจกจ่าย มีวิธีการทำเช่นนี้? new Worker(function() { //Long-running work here }); เนื่องจากฟังก์ชั่นชั้นหนึ่งมีความสำคัญอย่างยิ่งต่อ JavaScript ทำไมวิธีมาตรฐานในการทำงานพื้นหลังจึงต้องโหลดไฟล์ JavaScript อื่นทั้งหมดจากเว็บเซิร์ฟเวอร์

5
Node.js และการร้องขอที่ใช้ CPU มาก
ฉันเริ่มซ่อมเซิร์ฟเวอร์ Node.js HTTP และชอบที่จะเขียน Javascript ฝั่งเซิร์ฟเวอร์จริงๆ แต่มีบางอย่างที่ทำให้ฉันเริ่มใช้ Node.js สำหรับเว็บแอปพลิเคชันของฉัน ฉันเข้าใจแนวคิด async I / O ทั้งหมด แต่ฉันค่อนข้างกังวลเกี่ยวกับเคสขอบที่รหัสขั้นตอนเป็นอย่างมาก CPU เช่นการจัดการภาพหรือเรียงลำดับชุดข้อมูลขนาดใหญ่ ตามที่ฉันเข้าใจเซิร์ฟเวอร์จะเร็วมากสำหรับคำขอหน้าเว็บอย่างง่ายเช่นการดูรายชื่อผู้ใช้หรือการดูโพสต์บล็อก อย่างไรก็ตามหากฉันต้องการเขียนโค้ดที่เน้น CPU มาก (ในส่วนท้ายของผู้ดูแลระบบ) ที่สร้างกราฟิกหรือปรับขนาดภาพหลายพันภาพคำขอจะช้ามาก (ไม่กี่วินาที) เนื่องจากรหัสนี้ไม่ใช่ async ทุกคำขอที่มาถึงเซิร์ฟเวอร์ในช่วงสองสามวินาทีนั้นจะถูกบล็อกจนกว่าคำขอของฉันจะเสร็จสิ้น หนึ่งข้อเสนอแนะคือการใช้ Web Workers สำหรับงานที่ต้องใช้ CPU มาก อย่างไรก็ตามฉันเกรงว่าเจ้าหน้าที่เว็บจะทำให้การเขียนโค้ดแบบล้างนั้นทำได้ยากเนื่องจากทำงานโดยการรวมไฟล์ JS แยกต่างหาก จะเกิดอะไรขึ้นถ้ารหัสที่ใช้งาน CPU เข้มข้นอยู่ในวิธีการของวัตถุ มันค่อนข้างจะเขียนไฟล์ JS สำหรับทุกวิธีที่ใช้ CPU มาก ข้อเสนอแนะอีกประการหนึ่งคือการวางไข่กระบวนการเด็ก แต่นั่นทำให้รหัสบำรุงรักษาน้อย ข้อเสนอแนะใดที่จะเอาชนะอุปสรรค (รับรู้) นี้? …

3
กรณีใช้งานสำหรับ Web Workers คืออะไร [ปิด]
ปิด คำถามนี้จะต้องมีมากขึ้นมุ่งเน้น ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้มุ่งเน้นที่ปัญหาเดียวโดยแก้ไขโพสต์นี้ ปิดให้บริการใน4 ปีที่แล้ว ปรับปรุงคำถามนี้ ฉันกำลังมองหา scenarious จริงของโลกสำหรับการใช้เว็บแรงงาน API

2
พนักงานบริการสามารถทำอะไรได้บ้างที่พนักงานทำเว็บทำไม่ได้
พนักงานบริการสามารถทำอะไรได้บ้างที่พนักงานทำเว็บทำไม่ได้ หรือในทางกลับกัน? ดูเหมือนว่าผู้ปฏิบัติงานบนเว็บจะเป็นส่วนหนึ่งของฟังก์ชันการทำงานของผู้ปฏิบัติงานบริการ ถูกต้องหรือไม่

7
ข้อใดจะดีกว่าสำหรับงานพร้อมกันบน node.js เส้นใย? คนทำงานเว็บ? หรือเธรด?
ฉันสะดุดกับ node.js เมื่อหลายปีก่อนและชอบมันมาก แต่ในไม่ช้าฉันก็พบว่ามันขาดความสามารถในการทำงานที่ต้องใช้ CPU มาก ดังนั้นฉันจึงเริ่ม googling และได้รับคำตอบเหล่านี้เพื่อแก้ปัญหา: Fibers, Webworkers และ Threads (thread-a-gogo) ตอนนี้จะใช้อันไหนเป็นความสับสนและหนึ่งในนั้นจำเป็นต้องใช้อย่างแน่นอน - จุดประสงค์ของการมีเซิร์ฟเวอร์ที่ IO ดีแค่ไหนและไม่มีอย่างอื่น? คำแนะนำที่จำเป็น! อัพเดท: ฉันกำลังคิดหาวิธีที่ไม่สาย เพียงแค่ต้องการคำแนะนำมากกว่านั้น ตอนนี้สิ่งที่ฉันคิดคือ: มามีเธรดกันเถอะ (ใช้ thread_a_gogo หรืออาจจะเป็นเว็บเวิร์ค) ตอนนี้เมื่อเราต้องการมากขึ้นเราสามารถสร้างเพิ่มเติมได้ แต่จะมีข้อ จำกัด บางประการเกี่ยวกับกระบวนการสร้าง (ไม่ได้บอกเป็นนัยโดยระบบ แต่อาจเป็นเพราะค่าใช้จ่าย) ตอนนี้เมื่อเราเกินขีด จำกัด เราสามารถแยกโหนดใหม่และเริ่มสร้างเธรดทับได้ ด้วยวิธีนี้มันสามารถดำเนินต่อไปได้จนกว่าเราจะถึงขีด จำกัด (ในที่สุดกระบวนการก็มีค่าใช้จ่ายสูงเช่นกัน) เมื่อถึงขีด จำกัด นี้เราจะเริ่มจัดคิวงาน เมื่อใดก็ตามที่เธรดว่างจะมีการมอบหมายงานใหม่ วิธีนี้จะดำเนินต่อไปได้อย่างราบรื่น นั่นคือสิ่งที่ฉันคิด ความคิดนี้ดีหรือไม่? ฉันยังใหม่กับกระบวนการและเธรดทั้งหมดนี้ดังนั้นจึงไม่มีความเชี่ยวชาญใด ๆ กรุณาแบ่งปันความคิดเห็นของคุณ …

15
Chrome ไม่สามารถโหลดผู้ปฏิบัติงานบนเว็บ
ฉันกำลังทำงานในโครงการที่ใช้ผู้ปฏิบัติงานบนเว็บ ในส่วนหัวของฉันฉันมีรหัสนี้: var worker = new Worker("worker.js"); // More code สิ่งนี้ใช้ได้ดีใน Safari แต่ Chrome รายงานข้อผิดพลาดต่อไปนี้: Uncaught SecurityError: Failed to create a worker: script at '(path)/worker.js' cannot be accessed from origin 'null'. เหตุใดสิ่งนี้จึงทำงานได้อย่างสมบูรณ์ใน Safari แต่ไม่ใช่ Chrome ฉันจะแก้ไขปัญหานี้ได้อย่างไร ขอบคุณ.

2
จะเพิ่มคลาสเนทีฟใหม่ในบริบทของ WebWorker ใน JavaScriptCore ได้อย่างไร
ฉันมีแอปพลิเคชันที่ขยาย JavaScript ผ่าน JavaScriptCore ในเบราว์เซอร์ webkit-gtk ตอนนี้ฉันมีหลายคลาสที่ฉันเพิ่มเข้าไปในบริบทส่วนกลางดังนี้: void create_js(gpointer context, char* className, JSClassDefinition clasDefinition) { JSClassRef classDef = JSClassCreate(&clasDefinition); JSObjectRef classObj = JSObjectMake(context, classDef, context); JSObjectRef globalObj = JSContextGetGlobalObject(context); JSStringRef str = JSStringCreateWithUTF8CString(className); JSObjectSetProperty(context, globalObj, str, classObj, kJSPropertyAttributeNone, NULL); JSStringRelease(str); } ตอนนี้ฉันต้องการเพิ่มชั้นเรียนเหล่านั้นในบริบทของ WebWorker ด้วยดังนั้นฉันจึงสามารถเรียกพวกเขาจากคนงานที่สร้างอินสแตนซ์ใน JS ได้ ฉันได้ลองรับWorkerวัตถุแล้ว: JSStringRef workerStr = …

1
WebWorker คำนวณ regexp ที่ช้าจับคู่ช้าลงอย่างมาก (3x) - Firefox เท่านั้น
ก่อนอื่นฉันเพิ่งสร้างนิพจน์ทั่วไปที่จะจับคู่พา ธ ไลบรารีภายนอกที่ไม่ซ้ำกันทั้งหมดในรายการไฟล์ส่วนหัวทั้งหมดในโปรเจ็กต์ ฉันถามคำถามเกี่ยวกับการสร้าง regexpเมื่อสัปดาห์ที่แล้ว ฉันเริ่มเข้าไปยุ่งเพื่อดูว่ามันจะทำงานอย่างไรเมื่ออะซิงโครนัสและเมื่อกลายเป็นคนทำงานบนเว็บ เพื่อความสะดวกและความน่าเชื่อถือฉันได้สร้างไฟล์สากลนี้ที่ทำงานในทั้งสามโหมด: /** Will call result() callback with every match it founds. Asynchronous unless called * with interval = -1. * Javadoc style comment for Arnold Rimmer and other Java programmers: * * @param regex regular expression to match in string * @param string guess …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.