サービスワーカーがWebワーカーができないことは何ができますか?


回答:


140

それらが意図されているものには大きな違いがあります:

ウェブワーカー

Webワーカーは、Webコンテンツがバックグラウンドスレッドでスクリプトを実行するための簡単な手段を提供します。ワーカースレッドは、ユーザーインターフェイスを妨げることなくタスクを実行できます。さらに、XMLHttpRequestを使用してI / Oを実行できます(ただし、responseXMLおよびチャネル属性は常にnullです)。作成されたワーカーは、そのコードで指定されたイベントハンドラーにメッセージを投稿することで、そのコードを作成したJavaScriptコードにメッセージを送信できます(逆も同様です)。

ソース-Webワーカーの使用

サービスワーカー

Service Workerは基本的に、Webアプリケーションとブラウザーおよびネットワーク(利用可能な場合)の間に位置するプロキシサーバーとして機能します。これらは、(とりわけ)効果的なオフラインエクスペリエンスの作成を可能にし、ネットワークリクエストをインターセプトし、ネットワークが利用可能であり、更新されたアセットがサーバー上にあるかどうかに基づいて適切なアクションを実行することを目的としています。また、プッシュ通知やバックグラウンド同期APIへのアクセスも許可されます。

ソース-Service Worker API

したがって、Webワーカーはユーザーインターフェースをフリーズさせずに高価なスクリプトを実行するのに便利ですが、Serviceワーカーはネットワーク要求からの応答を変更するのに役立ちます(たとえば、オフラインアプリを構築するとき)。


1
サービスワーカーがWebワーカーができないことは何ができますか?
パセリエ

1
@Pacerierが2番目の引用と最後の段落を読んで質問に答えます
Buksy

私はこれが質問に答えないことにPacerierに同意します。私は、一方が何をし、もう一方をしているのかを伝えるだけです。読者はそれに基づいて結論を出すかもしれませんが、良い答えは明確にする必要があります。
キシア

Aliが提供したもう1つの答えは、2つの技術の違いについての幅広い説明です。しかし、私は私の回答の最後の段落が質問に明確に答えると思います。Webワーカーは、オフラインアプリの構築を支援できます。より良い答えがあると思われる場合は、もう1つ追加してください:)
Buksy

1
@Buksy、コメントの誤植:[[Service]]ワーカーがオフラインアプリの構築を支援できる
Ahmad Mobaraki

143

Buksyの答えは正しいですが、私の意見では、元の質問、つまり「サービスワーカーがWebワーカーができないことは何ができるのか、またはその逆は」には答えません

それらのライフサイクルと、保持できるオリジンあたりのインスタンス数には、根本的な違いがあります。要するに:

               | Web Workers  | Service Workers  |
|--------------|--------------|------------------|
| Instances    | Many per tab | One for all tabs |
| Lifespan     | Same as tab  | Independent      |
| Intended use | Parallelism  | Offline support  |

Buksyの答えは基本的に表の最後の行です。クレジット:スライド35から、Nolan LawsonによるDemystifying Web Workers and Service Workersからこの表を取り上げました。

特に、Webワーカーを生成および終了する方法を次に示します。

Webワーカーの使用

一方、サービスワーカーには独自のライフサイクルがありますが、これは確かに「最も複雑な部分」です。

サービスワーカーのライフサイクル

したがって、ライフサイクルは2つの基本的な違いの1つです(それらの使用目的の結果)。

以前はブラウザーサポートに大きな違いがありました。Safarifor iOSでは11.3(2018年3月29日)までService Workerをまったく使用できませんでした。ServiceWorkerを使用できますか?を参照してください対照的に、Webワーカーのブラウザーサポートは2012年よりもはるかに優れています。Webワーカーを使用できますか?

IE11をサポートする必要がある場合、使用できるのはWebワーカーのみです。IE11にはサービスワーカーがありません。IE11 のサポート終了は明らか2025年 10月14日です。

ブラウザ間のAPIサポートには微妙な違いがあります。HTML5ワーカーテスト(Nolan Lawsonによる)を参照してください。特定のブラウザでは、ある種類のワーカーが特定のAPI呼び出しをサポートしているのに対して、他の種類はサポートしていない場合があります。そのページにアクセスして、独自のブラウザーをテストしてください!


3
その表はそれを非常によく説明しています。元の質問はおそらく「何が違うのですか?」と表現するほうがよいでしょう
ドレナイ

1
共有Webワーカーができないこと、サービスワーカーができることは何ですか?
パチェリエ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.