Web Worker というワードを聞いて、あれServiceWorkerとはなにが違うの?と思ったので調べた
上のMDNドキュメントより
Web Workerは、ウェブアプリケーションにおけるスクリプトの処理をメインとは別のスレッドに移し、バックグラウンドでの実行を可能にする仕組みのことです。時間のかかる処理を別のスレッドに移すことが出来るため、 UI を担当するメインスレッドの処理を中断・遅延させずに実行できるという利点があります。
これを読んだときにServiceWorkerでは?と思ったが、読み進めるとWeb Worker には以下のような種類があり、ServiceWorkerはその1つだと知った
- Dedicated Worker
- 特有の URL で動作する専用ワーカーのインスタンスを生成することができる
- そのコンテキストは DedicatedWorkerGlobalScope オブジェクトで表現される
- Shared Worker
- ServiceWorker
- 複数のウェブアプリケーション間やブラウザ、 (利用可能なら) ネットワークとの間でプロキシサーバーとして動く
- オフラインでのユーザーエクスペリエンスを実現するために設計されている
- プッシュ通知やバックグラウンド同期の API 群へのアクセスも可能
- Chrome Worker
- Firefox 上でのみ使えるWorker
- アドオンの開発時、拡張機能で Web Workers を使いたいときなど
- Audio Worker
- 音声処理を Worker のコンテキスト内でスクリプトで直接実行するときなど