【さーびすわーかー】

Service Worker とは?

💡 ブラウザの「裏方」で働くスクリプト
📌 このページのポイント
Service Worker ― ブラウザ中継の仕組み Webページ fetch リクエスト (HTML, API等) Service Worker リクエストを傍受 キャッシュ判定 オフライン対応 プッシュ通知 キャッシュ 高速レスポンス ネットワーク サーバーへ通信 主な機能 オフライン対応 ネット未接続でも動作 プッシュ通知 バックグラウンド受信 キャッシュ戦略 高速な表示を実現
Service Workerのイメージ
ひよこ ひよこ

Service Workerって何ができるの?

ペンギン先生 ペンギン先生

①オフラインキャッシュ(ネットワーク切断時にキャッシュからページを表示)、②プッシュ通知ブラウザが閉じていても通知を受信)、③バックグラウンド同期オフライン時のデータ送信を後から実行)、④ネットワークリクエストの制御(キャッシュ優先やネットワーク優先の戦略)。Webアプリをネイティブアプリに近づける技術だよ

ひよこ ひよこ

ライフサイクルが複雑って聞くけど…

ペンギン先生 ペンギン先生

install(初回登録時にキャッシュを準備)→activate(古いキャッシュを削除)→fetch(ネットワークリクエストをインターセプト)のライフサイクル。更新時は新しいService Workerがインストールされても、すぐには有効にならず古い方が動き続ける(waiting状態)。skipWaiting()で即時有効化できるけど、クライアントとの整合性に注意だよ

ひよこ ひよこ

キャッシュ戦略にはどんな種類がある?

ペンギン先生 ペンギン先生

①Cache First(キャッシュ優先、なければネットワーク)→静的アセットに最適、②Network First(ネットワーク優先、失敗時キャッシュ)→APIレスポンスに最適、③Stale While Revalidate(キャッシュを即返しつつ裏でネットワーク更新)→ニュースフィード等に最適。Workbox(Googleライブラリ)を使えば簡単に実装できるよ

ひよこ ひよこ

セキュリティの注意点は?

ペンギン先生 ペンギン先生

Service WorkerはHTTPS必須(localhostは例外)。ネットワークリクエストをインターセプトできる強力な機能だから、悪意あるService Workerが仕込まれるとXSSより深刻な攻撃になる。スコープ(制御範囲)はService Workerファイルのパス以下に限定される。セキュリティヘッダー(CSP等)の設定も忘れずにね

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Service Worker」って出てきたら「ブラウザの裏で動いてオフライン対応や通知を実現する技術」と思えればだいたいOK!
📖 おまけ:英語の意味
「Service Worker」 = サービスワーカー
💬 Service(サービス)を提供するWorker(作業者)。ブラウザとネットワークの間で働くよ
← 用語集にもどる