พนักงานบริการสามารถทำอะไรได้บ้างที่พนักงานทำเว็บทำไม่ได้ หรือในทางกลับกัน?
ดูเหมือนว่าผู้ปฏิบัติงานบนเว็บจะเป็นส่วนหนึ่งของฟังก์ชันการทำงานของผู้ปฏิบัติงานบริการ ถูกต้องหรือไม่
พนักงานบริการสามารถทำอะไรได้บ้างที่พนักงานทำเว็บทำไม่ได้ หรือในทางกลับกัน?
ดูเหมือนว่าผู้ปฏิบัติงานบนเว็บจะเป็นส่วนหนึ่งของฟังก์ชันการทำงานของผู้ปฏิบัติงานบริการ ถูกต้องหรือไม่
คำตอบ:
มีความแตกต่างอย่างมากในสิ่งที่พวกเขามีไว้สำหรับ:
คนงานเว็บ
Web Workers ให้วิธีง่ายๆสำหรับเนื้อหาเว็บในการรันสคริปต์ในเธรดพื้นหลัง เธรดผู้ปฏิบัติงานสามารถทำงานได้โดยไม่รบกวนส่วนติดต่อผู้ใช้ นอกจากนี้ยังสามารถดำเนินการ I / O โดยใช้ XMLHttpRequest (แม้ว่าคุณสมบัติ responseXML และ channel จะเป็นโมฆะเสมอ) เมื่อสร้างแล้วผู้ปฏิบัติงานสามารถส่งข้อความไปยังรหัส JavaScript ที่สร้างขึ้นโดยโพสต์ข้อความไปยังตัวจัดการเหตุการณ์ที่ระบุโดยรหัสนั้น (และในทางกลับกัน)
พนักงานบริการ
โดยพื้นฐานแล้วผู้ให้บริการจะทำหน้าที่เป็นพร็อกซีเซิร์ฟเวอร์ที่อยู่ระหว่างเว็บแอปพลิเคชันกับเบราว์เซอร์และเครือข่าย (เมื่อมี) พวกเขามีจุดมุ่งหมายเพื่อ (เหนือสิ่งอื่นใด) ทำให้สามารถสร้างประสบการณ์ออฟไลน์ที่มีประสิทธิภาพสกัดกั้นคำขอของเครือข่ายและดำเนินการที่เหมาะสมโดยพิจารณาว่าเครือข่ายนั้นพร้อมใช้งานหรือไม่และเนื้อหาที่อัปเดตอยู่บนเซิร์ฟเวอร์ นอกจากนี้ยังอนุญาตให้เข้าถึงการแจ้งเตือนแบบพุชและ API การซิงค์พื้นหลัง
ดังนั้น Web Workers จึงมีความสะดวกในการเรียกใช้สคริปต์ราคาแพงโดยไม่ทำให้อินเทอร์เฟซผู้ใช้หยุดทำงานในขณะที่ Service Workers มีประโยชน์ในการแก้ไขการตอบสนองจากคำขอของเครือข่าย (ตัวอย่างเช่นเมื่อสร้างแอปออฟไลน์)
คำตอบของ Buksyนั้นถูกต้อง แต่ในความคิดของฉันมันไม่ได้ตอบคำถามเดิมกล่าวคือ: "พนักงานบริการทำอะไรได้บ้างที่คนทำงานบนเว็บทำไม่ได้หรือในทางกลับกัน"
มีความแตกต่างพื้นฐานในวงจรชีวิตและจำนวนอินสแตนซ์ต่อจุดเริ่มต้นที่คุณมีได้ ในระยะสั้น:
| Web Workers | Service Workers |
|--------------|--------------|------------------|
| Instances | Many per tab | One for all tabs |
| Lifespan | Same as tab | Independent |
| Intended use | Parallelism | Offline support |
คำตอบของ Buksy คือแถวสุดท้ายของตาราง เครดิต: ผมเอาตารางนี้จากการเข้าใจอย่างลึกซึ้งเว็บแรงงานและพนักงานบริการโดยโนแลนลอว์สันเริ่มต้นจากสไลด์ 35
โดยเฉพาะอย่างยิ่งนี่คือวิธีที่คุณวางไข่และเลิกจ้างพนักงานเว็บ:
ในขณะที่พนักงานบริการมีวงจรชีวิตของตนเองซึ่งเป็นที่ยอมรับว่า "ส่วนที่ซับซ้อนที่สุด":
รูปแบบชีวิตจึงเป็นความแตกต่างพื้นฐานอย่างหนึ่งระหว่างสองสิ่งนี้ (อันเป็นผลมาจากการใช้งานที่ตั้งใจไว้)
เคยมีความแตกต่างอย่างมากในการรองรับเบราว์เซอร์ : พนักงานบริการไม่สามารถใช้ได้เลยใน Safari สำหรับ iOS จนถึงวันที่ 11.3 (29 มีนาคม 2018) โปรดดูที่ฉันสามารถใช้พนักงานบริการได้หรือไม่ ในทางตรงกันข้ามผู้ปฏิบัติงานบนเว็บมีการรองรับเบราว์เซอร์ที่ดีขึ้นมากในปี 2012: ฉันสามารถใช้ Web Worker ได้หรือไม่
ถ้าคุณได้ให้การสนับสนุน IE11, คุณสามารถใช้แรงงานเว็บ: IE11 ไม่ได้มีคนงานบริการและเห็นได้ชัดในตอนท้ายของการสนับสนุนสำหรับ IE11 เป็น 14 เดือนตุลาคม,ในปี 2025
มีความแตกต่างเล็กน้อยในการรองรับ APIในเบราว์เซอร์โปรดดูHTML5 Worker Test (โดย Nolan Lawson) ในเบราว์เซอร์เฉพาะผู้ปฏิบัติงานประเภทหนึ่งอาจรองรับการเรียก API บางอย่างในขณะที่อีกประเภทหนึ่งไม่รองรับ ไปที่หน้านั้นและทดสอบเบราว์เซอร์ของคุณเอง!