サイト更新後も開いたタブが古いまま?Service Workerの待機と切替の確かめ方

Webサイト・SEO · 実務ガイド
『サイトを更新したのに、朝から開いた画面だけ古い』。営業担当の受注メモを消して再読み込みしてよいか、迷う場面です。Service Workerという通信を扱う仕組みがある画面では、新しい版が準備できても、開いているタブは旧版の担当下に残ることがあります。
この記事では、架空の受注メモ画面で旧版が残る例を使います。配信版・画面版と、待機中・活動中・今のタブを担当するWorkerを分けて読み、未送信の入力を保全してから切替結果を確認する順序を説明します。本文の図と比較表から、新版の配信と開いたタブへの適用の違いが分かります。編集側の限定したローカル実記録と、自社サイトでの結果は区別してください。

営業担当が入力したメモを残し、更新担当へ画面の版を確かめる場面を扱います。写真は説明用の架空の仕事の情景として制作したもので、実サイトのService Workerの状態、入力保存の完了、取引先への送信や業務再開を証明しません。
この記事でできるようになること
- 新版の配信と、開いたタブへの適用を区別し、古い表示が残る段階を絞る方法。
- 未送信のメモの保存を確認してから切り替える手順。
- 新版の導入失敗、待機の継続、画面と通信担当の不一致を分けて判断する方法。
01 / Webサイト・SEO
受注画面を更新したのに、営業担当のタブだけ古いのはなぜ?
Service Workerが旧版の応答を担当している可能性を、配信版とタブの状態を分けて確かめます。

架空の受注メモ教材では、更新担当がBを配信しても、先に開いたタブの画面とその通信担当はAのままという状態を扱います。配信版、表示版、今のタブを担当するcontrollerを別欄で読み、未送信のメモを保全します。Service Workerを使っていないサイトもあるため、古い表示だけで原因を決めません。これは教材の対応関係で、自社サイトの観測結果ではありません。
Service Workerは、ページとは別に動いて通信の応答を扱う仕組みです。キャッシュという保存済みのコピーを返すこともあります。更新時に交代を待つのは、利用中の旧画面と新しい通信処理が不用意に混ざるのを避けるためです。ただし、この仕組みを使わないサイトもあるので、古い表示だけで原因を決めません。
更新の途中には、旧Worker Aが使われたまま新Worker Bが準備される時間があります。教材では画面の『表示版A』、サーバーの『配信版B』、今のタブを担当する『controller A』を別々に見ます。Bを配信できたことだけで、先に開いたタブがBを利用したとは言えません。
更新担当は、古い画面のURL、確認日時、ブラウザ、操作前後の版を記録します。Service Workerの登録がない、違うURLを見ている、元の配信内容もAのままなら、配信先や通常のHTTPキャッシュなど別の原因を調べます。既存の入力を消してから探す必要はありません。
| 観察 | 次に確かめる対象 |
|---|---|
| 配信B/タブA/controller A | Service Workerのwaitingとactive |
| 登録なし/タブA | 配信URLやHTTP側の応答 |
| 配信もA | 更新したファイル・配信先 |
古い画面1件について、配信版と表示版が同じか更新担当へ確認してください。入力を消す操作より先に、どの版が残っているかを確かめます。
02 / Webサイト・SEO
新しい版は準備済み?waiting・active・controllerを見分ける
waiting、active、controllerを3つの別欄で読み、同じSW URLから版を推測しません。

架空教材の交代待ちでは、登録のwaitingはB、activeはA、先に開いたタブのcontrollerはAです。図のAと先に開いたタブの線は今のページを担当する関係を示し、Bの待機を先に開いたタブへの適用完了へ読み替えません。実際の確認では読取日時と各欄の返答を残し、返答がない欄や自社の状態を教材の期待値で埋めません。
waitingは、導入の準備が済んで交代を待つWorkerです。activeは、その登録で活動中、または活動開始の処理中のWorkerです。controllerは、今のページを制御するWorkerです。『制御』は、このページの通信を扱う役割を指します。登録のactiveがあっても、初回に開いたページのcontrollerは空になる場合があります。
開発担当は、登録のwaiting・activeと、今のページを担当するcontrollerを別々に読みます。Service WorkerのURLが同じでも、動いている版まで同じとは限りません。自社のリリース識別の方法を確認し、Workerから版名の返答を得られない場合は、期待値で埋めず未確認として残します。
開発担当は、今のページに合う登録と通信担当を読む
会社が認めたHTTPSの確認環境で、開発担当が対象ページの開発者ツールにあるConsole(値やエラーを表示する確認欄)を開きます。次のコードは登録と状態を読むだけで、登録の追加・更新・削除やキャッシュ消去は行いません。対象ページ以外の画面で実行すると、その画面に合う登録を調べることになるため、先にURLを合わせてください。
画面が狭い場合は、コード欄を横に動かして行の末尾まで読めます。
if (!("serviceWorker" in navigator)) {
console.log("このページでは読み取れません");
} else {
navigator.serviceWorker.getRegistration()
.then((registration) => {
console.table({
"登録範囲": registration?.scope ?? "登録なし",
"交代待ち": registration?.waiting?.state ?? "なし",
"活動中": registration?.active?.state ?? "なし",
"このページの担当":
navigator.serviceWorker.controller?.state ?? "なし"
});
})
.catch((error) => console.error("読取りに失敗", error));
}getRegistration()は、今のページのURLに担当範囲が合う登録を読みます。仕様はMDNのgetRegistration()の説明で確認できます。「登録なし」なら、このURLに合う登録が取得されていません。「読取りに失敗」というエラーは「なし」と区別します。
このコードで分かるのは登録範囲とinstalled・activatedなどの状態で、A版・B版の識別ではありません。版名は自社のリリース識別方法で別に照合します。例えば表の交代待ちがinstalled、活動中とこのページの担当がactivatedでも、その文字だけからB・A・Aとは決められません。Workerから版名を返す仕組みがない場合は、URLが同じという理由で版を埋めず、更新担当と識別方法をそろえます。
waiting B、active A、controller Aなら、Bは準備済みで、そのタブはまだAの担当下です。一方、waitingが空なら、先にactiveとcontrollerの版も読みます。両方がBなら交代済みの候補であり、次は画面版と保存した入力を照合します。Aのままなら、新しい内容の配信、登録先、導入エラーを調べます。waitingが空という一項目だけでは、成功にも失敗にも決めません。強制再読み込みではcontrollerが空になる場合があるため、通常の再読み込みと区別してください。
比較表は横に動かして全ての列を確認できます。
| 欄 | 教材期待 | 意味 |
|---|---|---|
| 画面版 | A | 読み込まれたHTMLの版 |
| 配信版 | B | 今サーバーが選んでいる版 |
| waiting | B / installed | Bの導入準備が済んだ |
| active | A / activated | 登録の利用中Worker |
| controller | A / activated | 先に開いたタブを担当するWorker |
waiting・active・controllerの実値と読取日時を別欄へ保存してください。
03 / Webサイト・SEO
2つのタブを開いたまま新版を配信すると、何が残る?
確認環境で旧版を使う2つのタブを残すと、新版が準備済みでも各タブは旧版の担当下に残る場合があります。

専用ローカル教材では、controller Aを確認した先に開いたタブと後から開いたタブを残してBを配信し、更新確認後にwaiting Bと各タブの実値を読みます。配信B、更新の要求、waiting B、画面と担当がAという各状態は別々の確認点です。図はこの教材の期待を示します。編集側の2026年10月10日の限定的な実操作記録や、自社サイトの結果を新たに証明する図ではありません。
開発担当は、旧版を利用する画面が残っているかを、会社が認めた確認環境で調べます。旧版を表示する先に開いたタブと、後から開いたタブを区別し、それぞれの画面版と通信担当を確認します。業務中の画面では、入力を保全できるまで、原因確認のためにタブを閉じる操作を先に求めません。
同じService WorkerのURLに新しい内容を配信しても、旧版が担当するタブへ直ちに適用されるとは限りません。開発担当が更新確認を要求した後は、waiting・active・controllerと各タブの画面版を読み直します。update()の要求が終わったことと、待機中の新版がそのタブを担当したことは別に確認します。
教材の期待はwaiting B、active A、controller A、画面Aです。編集側は2026年10月10日、専用127.0.0.1の教材をCodexのブラウザで操作し、この交代待ちを実際に読みました。次の第5章で操作ごとの結果を示します。初回の制御確認やBの導入が違えば、その段階の実値とエラーを保存してください。今回の記録は自社サイトの結果を代わりにするものではありません。
| 操作 | 確認点 |
|---|---|
| Aで登録→通常再読み込み | active Aとcontroller Aを実読 |
| Aの先に開いたタブと後から開いたタブを開いたままB配信 | 配信B/画面Aを別欄で読む |
| 先に開いたタブからupdateを要求 | 導入成功後のwaiting Bを確認 |
| 通常再読み込みだけを試す | Bへ必ず交代するとは扱わない |
画面版・配信版・waiting・active・controllerのうち、最初に食い違った状態を開発担当と確認してください。
04 / Webサイト・SEO
未送信の受注メモを消さずに、B版へ切り替えるには?
入力の保存を確認し、旧Workerを使う対象タブを閉じるか範囲外へ移動した後、新しいタブの版と担当を照合します。

営業担当は、元のメモと保存先の実内容を照合し、未送信という状態を残してから対象タブを整理します。再開後は画面・active・controllerの実値と保存したメモを照合します。画面B・active B・controller Bは教材で確かめる期待であり、2タブを閉じた直後の切替や自社サイトの成功を保証しません。保存したメモの自動復元、取引先への送信・受領、業務再開の承認も別に確認します。
未送信の受注メモがあるタブは、保存内容を照合する前に閉じません。会社が決めた保存先で内容を実際に読み、元の画面の文章や入力項目と比べます。図4の「部品の見積メモ」も、保存を始めたという操作と、同じ内容が残ったという結果を分ける例です。一致しない、保存先を開けない、入力が欠けている場合は、タブを残したまま保存方法を確認します。保存できたことは、取引先へ送信・受領されたこととは別です。
作業を残した後、先に開いたタブだけでなく同じ登録の旧Workerを使う後から開いたタブなども終了するか、担当範囲の外へ移動します。scopeはWorkerがページを担当するURL範囲です。通常の再読み込みでは旧ページと新ページが重なるため、待機が解消しないことがあります。他の開いた画面や処理中のイベントも関係するので、『2タブを閉じた直後に必ずB』とは約束しません。
対象画面を開き直し、画面版・active・controllerの版と、保存したメモを照合します。教材で/lesson/を開き直したときの期待は画面B・active B・controller Bですが、自社では実際の対象URLとリリース識別を使います。画面だけBで担当がA、または担当だけBで画面がAなら、切替完了とせず新旧の組合せを開発担当が調べます。版がそろっても入力が欠けていれば業務再開を保留します。未送信のメモを取引先へ再送してよいかは、元の送信・受領状態を確かめてから業務責任者が判断します。
| 段階 | 確認する実物 |
|---|---|
| 終了前 | メモの内容・未送信・保存先の照合 |
| 対象整理 | 先に開いたタブと後から開いたタブなど旧Worker利用中の画面 |
| 再開後 | 画面B/active B/controller B |
| 業務再開 | 保存内容と送信・受領の別確認 |
未保存の作業と対象タブを記し、保存確認後の切替結果を残してください。
05 / Webサイト・SEO
B版へ切り替わらない時、どの担当が何を調べる?
導入失敗、待機の継続、画面と担当の不一致を分け、原因に関係する箇所だけ開発担当が確認します。

B配信でwaitingがなければ開発担当が同じSW URLの内容と導入エラーを、waiting Bとcontroller Aなら残る制御対象と処理中イベントを調べます。controller Bと画面Aなら開発担当と更新担当が旧画面・新しい担当の組合せを確認します。メモの保存が不明なら営業担当と業務責任者が保存先、原内容、送信状態を照合します。症状だけで原因を確定せず、全キャッシュ消去などを一括で実行したり、確認前に業務再開を決めたりしません。
waitingが空でもactiveとcontrollerがBなら、待機を終えた可能性があります。画面版と保存内容を先に照合し、waitingを作るためだけに更新を繰り返しません。activeがAのままなら、Bのスクリプトの実内容、登録のscopeとURL、導入時の通信・構文エラーを調べます。導入が失敗して旧Workerが残っている場合は、そのエラーを直してから同じ条件で更新確認をやり直します。教材のserver-phase Bという配信側の値だけで、SW Bの導入成功とは判定しません。
waiting Bが残るなら、Aを使う別タブやアプリのウィンドウ、処理中のイベントを開発担当が調べます。controller Bなのに画面Aの場合は、交代を急ぐ設定による混在や、別の応答経路も確認対象です。skipWaitingは待機を省く要求ですが、読み込まれた古いHTMLまで自動で新しい文書へ書き換える命令ではありません。採用するなら、旧画面から新しいWorkerへの通信や未保存入力を別途試験します。
キャッシュをすべて消す、登録を外す、配信版をAへ戻す、といった処置をまとめて実行すると、原因や影響が追いにくくなります。まず観察JSON、エラー、リリース資材を保存し、開発担当が対象の登録・資材を限定します。サーバーをAへ戻しただけで、既に動くBのタブが即座にAへ戻るとも限りません。戻す場合も同じ版・担当・入力の照合を行います。
比較表は横に動かして全ての列を確認できます。
| 実操作 | 画面版 | waiting/active/controller |
|---|---|---|
| 初回Aを開く | A | なし/A/なし |
| 通常再読み込み後、Aの2タブ | A | なし/A/A |
| B配信+更新確認、旧2タブを残す | A | B/A/A |
| メモを保存確認、旧Aが1タブ残る | A | B/A/A |
| 旧2タブを閉じ、新しいタブを開く | B | なし/B/B |
比較表は横に動かして全ての列を確認できます。
| 症状 | 確認する箇所 | 次の対処と担当 |
|---|---|---|
| B配信/waitingなし | active・controllerの版、SWの実内容・導入エラー | 両方Bなら画面と入力を照合。Aなら開発担当が配信・導入を調べ、確認したエラーを直す。 |
| waiting B/controller A | 残る制御対象・処理中イベント | 保存確認後に旧版の利用画面を整理する。開発担当は残る利用対象を調べ、未保存の入力があれば切替を急がない。 |
| controller B/画面A | 急ぐ交代設定・旧新の組合せ | 開発担当と更新担当が旧画面・新担当の互換性を調べる。組合せを確かめるまで業務再開を保留する。 |
| メモの保存が不明 | 保存先と原内容・送信状態 | 営業担当は内容が一致するまでタブを閉じない。業務責任者は元の送信・受領を確かめ、再送や再開を判断する。 |
最初に一致しない状態を特定し、新版の導入、待機中の旧版利用、画面と通信担当の組合せのどこを調べるか決めてください。
06 / Webサイト・SEO
まとめ:入力を残し、画面と通信担当が切り替わったか確かめる
配信版と表示版を分け、未保存の作業を保全してから切替後の状態を確かめます。

切替前は配信版・画面版・waiting・active・controllerを分けて記録します。営業担当はメモの保存先の実内容を照合し、未送信という状態を残します。その後に旧版を使う画面を整理し、再開後の画面版と担当を実際に確認します。記入例の期待値と、元教材の2026年10月10日の限定的な実操作記録は別です。実サイトの結果、取引先の受領、業務再開の承認は未確認のまま扱います。
新版の配信だけでは、朝から開いていた画面まで新版になるとは限りません。まず今のページを担当するWorkerと登録の状態を分けて読みます。waitingが空でも、activeとcontrollerが新版なら交代済みの候補です。登録がなければ、Service Workerの切替操作へ進まず配信先など別の原因を調べます。
営業担当はメモを保存先の実内容と照合し、未送信という業務状態を残します。その後、旧Workerを使う画面を整理し、新しいタブの版・担当を確認します。切替を急ぐ機能を導入する場合にも、旧画面と新しいWorkerの組合せ、入力保護、戻す方法を試験してから業務責任者が採用範囲を決めます。
今日まず行うのは、古い画面1件の未送信入力を残し、そのページの担当と配信版を照合することです。保存内容が一致するまではタブを閉じず、切替後は画面・通信担当・入力をそろえて確認します。どれかが一致しなければ、その状態に対応する第5章の対処へ戻ります。読取りエラーを「なし」にしたり、教材のBを自社の成功へ置き換えたりしません。
対象画面1件で、入力が残っていることと切替後の画面・通信担当を確かめ、未確認が残る場合は業務再開の範囲を担当者と決めてください。
仕事の流れから、顧客との接点まで。
一体で見直す、最初の一歩を。


