Rumah > hujung hadapan web > tutorial css > Perbezaan antara soket web, pekerja web, dan pekerja perkhidmatan

Perbezaan antara soket web, pekerja web, dan pekerja perkhidmatan

Christopher Nolan
Lepaskan: 2025-03-10 11:49:13
asal
666 orang telah melayarinya

The Difference Between Web Sockets, Web Workers, and Service Workers

WebSockets, Pekerja Web, Pekerja Perkhidmatan ... Terma -terma ini yang mungkin anda temui dalam membaca atau mendengar. Mungkin tidak semua, tetapi sekurang -kurangnya salah seorang daripada mereka. Walaupun anda sudah biasa dengan pembangunan front-end, terdapat peluang yang tinggi bahawa anda perlu mengetahui apa yang mereka maksudkan. Atau anda mungkin seperti saya, kadang -kadang membingungkan mereka. Istilah ini kelihatan sangat serupa dan bunyi dan mudah dikelirukan.

mari kita buang mereka bersama -sama untuk membezakan antara web, pekerja web dan pekerja perkhidmatan. Daripada masuk ke dalam butiran, melakukan penyelidikan mendalam dan mengalami setiap satu untuk diri sendiri-lebih seperti pembantu kecil supaya anda dapat mengumpulnya pada masa akan datang.

Rujukan cepat

Kami akan bermula dengan gambaran lanjut untuk perbandingan dan perbandingan cepat.

WebSockets

WebSocket adalah protokol komunikasi dua hala. Fikirkan ia sebagai panggilan berterusan antara anda dan rakan yang tidak akan berakhir melainkan salah satu pihak memutuskan untuk menutup. Satu -satunya perbezaan ialah anda adalah penyemak imbas dan rakan anda adalah pelayan. Pelanggan menghantar permintaan kepada pelayan, dan pelayan bertindak balas dengan memproses permintaan klien, dan sebaliknya.

Komunikasi berdasarkan peristiwa. Buat objek WebSocket dan sambungkan ke pelayan, dan mesej antara pelayan mencetuskan acara untuk menghantar dan menerimanya.

Ini bermakna apabila sambungan awal ditubuhkan, kami mempunyai komunikasi pelayan klien di mana sambungan dimulakan dan tetap aktif sehingga klien atau pelayan memilih untuk menamatkannya dengan menghantar dekat. Ini menjadikan WebSockets sesuai untuk aplikasi yang memerlukan komunikasi berterusan dan langsung antara pelanggan dan pelayan. Banyak definisi yang saya lihat senarai aplikasi sembang sebagai kes penggunaan biasa - anda menaip mesej, hantar ke pelayan, mencetuskan acara, pelayan bertindak balas dengan data tanpa berulang kali ping pelayan.

Pertimbangkan senario berikut: Anda sedang dalam perjalanan keluar dan memutuskan untuk membuka Peta Google. Anda mungkin sudah tahu bagaimana Peta Google berfungsi, tetapi jika anda tidak, ia akan mencari lokasi anda secara automatik sebaik sahaja anda menyambung ke aplikasi dan menjejaki di mana sahaja anda pergi. Ia menggunakan pemindahan data masa nyata untuk menjejaki lokasi anda selagi sambungan ini aktif. Ini adalah WebSocket yang menetapkan perbualan dua hala yang berterusan antara penyemak imbas dan pelayan untuk memastikan data terkini. Aplikasi sukan dengan skor masa nyata juga boleh menggunakan WebSockets dengan cara ini.

Perbezaan terbesar antara WebSockets dan pekerja web (dan pekerja perkhidmatan yang akan kita lihat kemudian) adalah bahawa mereka mempunyai akses langsung ke DOM. Walaupun pekerja web (dan pekerja perkhidmatan) dijalankan pada benang berasingan, WebSockets adalah sebahagian daripada benang utama, yang membolehkan mereka mengendalikan DOM.

Terdapat alat dan perkhidmatan yang boleh membantu mewujudkan dan mengekalkan sambungan WebSocket, termasuk: SocketCluster, Asyncapi, Cowboy, Websocket King, Saluran, dan Gorilla WebSocket. MDN mempunyai senarai larian yang mengandungi perkhidmatan lain.

Lebih banyak maklumat WebSockets

  • Memperkenalkan WebSockets - Membawa soket ke web (web.dev)
  • Berfikir tentang penggunaan kuasa dan laman web (Chris Coyier)
  • API WebSocket (MDN Docs)
  • Sokongan Pelayar Terkini (Caniuse)

Pekerja Web

Pertimbangkan situasi di mana anda perlu melakukan banyak pengiraan kompleks sambil juga mengubah DOM. JavaScript adalah aplikasi tunggal yang menjalankan pelbagai skrip dan boleh memusnahkan antara muka pengguna yang anda cuba ubah dan pengiraan kompleks yang anda lakukan.

Ini adalah tempat pekerja web bermain.

Pekerja web membolehkan skrip berjalan dalam benang berasingan di latar belakang untuk mengelakkan skrip daripada menyekat satu sama lain pada benang utama. Ini menjadikan mereka sesuai untuk meningkatkan prestasi aplikasi yang memerlukan banyak operasi, kerana operasi ini dapat dilakukan pada benang berasingan di latar belakang tanpa menjejaskan penyerahan antara muka pengguna. Tetapi mereka tidak begitu baik untuk mengakses DOMS, kerana tidak seperti WebSockets, pekerja web berjalan di luar benang utama dalam benang sendiri.

Pekerja Web adalah objek yang melaksanakan fail skrip untuk melaksanakan tugas dengan menggunakan objek pekerja. Apabila kita bercakap tentang pekerja, mereka cenderung jatuh ke dalam salah satu daripada tiga jenis:

  • Pekerja Khas: Pekerja khas hanya boleh diakses oleh skrip yang memanggilnya. Ia masih melaksanakan tugas pekerja web biasa, seperti skrip multithreadednya.
  • Kongsi Pekerja: Kongsi Pekerja adalah bertentangan dengan pekerja yang berdedikasi. Ia boleh diakses oleh pelbagai skrip dan sebenarnya boleh melakukan apa -apa tugas yang dilakukan oleh pekerja web selagi mereka wujud dalam domain yang sama sebagai pekerja.
  • Pekerja Perkhidmatan: Pekerja perkhidmatan bertindak sebagai proksi rangkaian antara aplikasi, pelayar, dan pelayan, yang membolehkan skrip berjalan walaupun rangkaian di luar talian. Kami akan menutupnya di bahagian seterusnya.

Lebih banyak maklumat pekerja web

  • "dari benang utama" (Chris Coyier)
  • Keadaan pekerja web pada tahun 2021 (Chris Coyier)
  • Pengenalan kepada Pekerja Web (Zapier)
  • API Pekerja Web (MDN Docs)
  • Sokongan Pelayar Terkini (Caniuse)

Pekerja Perkhidmatan

Terdapat beberapa perkara yang kita tidak dapat dikawal, dan salah satunya adalah sambungan rangkaian pengguna. Mana -mana rangkaian yang dihubungkan oleh pengguna itu sendiri. Kami hanya boleh melakukan yang terbaik untuk mengoptimumkan aplikasi kami supaya mereka mendapat prestasi terbaik pada sebarang sambungan yang berlaku untuk digunakan.

Pekerja Perkhidmatan adalah salah satu daripada beberapa perkara yang boleh kita lakukan untuk meningkatkan prestasi aplikasi kami secara beransur -ansur. Pekerja perkhidmatan terletak di antara aplikasi, penyemak imbas, dan pelayan, menyediakan sambungan berulir yang selamat dan berasingan untuk dijalankan di latar belakang, terima kasih - anda meneka - pekerja web. Seperti yang kita pelajari di bahagian sebelumnya, pekerja perkhidmatan adalah salah satu daripada tiga jenis pekerja web.

Jadi mengapa anda memerlukan pekerja perkhidmatan yang terletak di antara aplikasi anda dan penyemak imbas pengguna? Begitu juga, kita tidak dapat mengawal sambungan rangkaian pengguna. Katakan sambungan itu terganggu kerana beberapa sebab yang tidak diketahui. Ini akan mengganggu komunikasi antara penyemak imbas dan pelayan, menghalang data daripada dilepaskan. Pekerja perkhidmatan tetap bersambung dan bertindak sebagai proksi tak segerak yang memintas permintaan dan melakukan tugas -bahkan setelah sambungan rangkaian hilang.

Ini adalah daya penggerak utama untuk apa yang biasa dipanggil "luar talian pertama" pembangunan. Kami boleh menyimpan aset dalam cache tempatan dan bukannya rangkaian, memberikan maklumat kritikal jika pengguna berada di luar talian, kandungan prefetch supaya pengguna boleh menggunakan apabila diperlukan, dan memberikan sandaran kepada ralat rangkaian. Mereka benar -benar tidak segerak, tetapi tidak seperti WebSockets, mereka tidak dapat mengakses DOM kerana mereka berjalan pada benang mereka sendiri.

Satu lagi perkara penting mengenai pekerja perkhidmatan ialah mereka memintas setiap permintaan dan tindak balas dari permohonan anda. Oleh itu, mereka mempunyai risiko keselamatan, dan terutamanya mereka mengikuti strategi homolog. Oleh itu, ini bermakna pekerja perkhidmatan tidak boleh dijalankan dari CDN atau perkhidmatan pihak ketiga. Mereka juga memerlukan sambungan HTTPS yang selamat, yang bermaksud anda memerlukan sijil SSL untuk menjalankannya.

Lebih banyak maklumat pekerja perkhidmatan

  • tambahkan pekerja perkhidmatan ke laman web anda (Chris Ferdinadi)
  • Gambaran Keseluruhan Pekerja Perkhidmatan (pemaju Chrome)
  • muatan HTML yang lebih kecil dengan pekerja perkhidmatan (Philip Walton)
  • Buku Masakan Pekerja Perkhidmatan (Mozilla)
  • API Pekerja Perkhidmatan (MDN Docs)
  • Sokongan Pelayar Terkini (Caniuse)

Ringkasan

Ini adalah penjelasan yang sangat baik tentang perbezaan (dan persamaan) antara WebSockets, pekerja web, dan pekerja perkhidmatan. Sekali lagi, terma dan konsep adalah cukup sama bahawa seseorang boleh dikelirukan dengan yang lain, tetapi diharapkan ini akan memberi anda pemahaman yang lebih baik tentang cara membezakannya.

kita mulakan dengan jadual rujukan cepat. Ini adalah sama, tetapi sedikit berkembang untuk perbandingan yang lebih terperinci. (Borang harus dimasukkan di sini, dan kandungan borang harus ditulis semula mengikut kandungan bentuk asal untuk mengekalkan niat asal)

Atas ialah kandungan terperinci Perbezaan antara soket web, pekerja web, dan pekerja perkhidmatan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan