Service Workerが実際にやっていること
サイトが Service Worker を登録すると、ブラウザーはそのスクリプトを、どのタブとも別のバックグラウンドで動かし始めます。Worker はサイトのネットワークリクエストを横取りし、ファイルをローカルキャッシュから配り、自分自身をネットワークから更新し、すべてのウィンドウを閉じた後もプッシュ通知の待ち受けを続けます。インストール型ウェブアプリ、オフラインのウェブメール、ストアアプリなしで動くメッセンジャー——その仕組みがこれです。
これは紛れもなく優れた設計であり、同時に、まったく恥じらいのないストレージ設計でもあります。ディスクに余裕がある限り、ブラウザーは1つのオリジンに CacheStorage 内へギガバイト単位の保持を許します。一度開いたきりのウェブプレイヤーやドキュメントエディターが、何年も数百MBを握り続けることもあります。Worker とそのキャッシュはブラウザープロファイルの中に居座り、ストレージの圧迫がブラウザーの手を強制しない限り、退去させるものは何もありません。
残骸の居場所
Chrome など Chromium 系ブラウザーでは、この保存領域は各プロファイルフォルダーの中の Service Worker\CacheStorage と Service Worker\ScriptCache の下にあります。いつもの容疑者は予想通りです。ウェブメール、各ストリーミングサービスのウェブプレイヤー、ブラウザー型メッセンジャー、そしてオフライン作業用にインターフェース全体をキャッシュするオフィススイート。Firefox も同じ発想を、オリジンごとに鍵分けした独自の保存ディレクトリで実装しています。つまり残骸は Chromium だけの習慣ですらありません。
- Chrome/Edge: %LOCALAPPDATA%\<browser>\User Data\<profile>\Service Worker\CacheStorage — ここではギガバイト級が当たり前です
- 最重量級は:ウェブメール、ストリーミングのウェブプレイヤー、ブラウザー型メッセンジャー、オンラインオフィススイート
- この保存領域は設計上、ブラウザーの再起動やアップデート、OSの再起動を乗り越えます
- サイトごとのサイズは DevTools → Application → Storage か chrome://settings/content/all で確認できます
- 一度訪れただけのサイトは、あなたが消すまでキャッシュを保持し続けます。自動的な有効期限はありません
安全に消去する方法
単一のサイトなら、DevTools → Application → Service Workers に Unregister ボタンがあり、chrome://serviceworker-internals はプロファイルに登録されたすべての Worker を同じ操作つきで一覧します。chrome://settings/content/all からサイトのデータを消せば、Worker、そのキャッシュ、Cookie が一掃されます。ログアウトはされますし、次に訪れたときサイトはどうせ再登録します。どちらの操作も危険ではありません。最悪でも、ウェブアプリが次回にファイルを再ダウンロードするだけです。
プロファイル全体のクリーンアップともなると、フォルダーを手作業で探し回るのはすぐに嫌になります。Kleaner PRO のディープクリーンはまさにこの仕事のために存在し、こうした残骸も含めて複数プロファイルのブラウザーキャッシュを一回のパスで掃き出します。手作業にこだわるなら、Service Worker フォルダーをサイズ順に並べて、最も重いオリジンを削除し、あとは日暮れまでに片付けて終わりです。どちらにしても容量は即座に戻り、サイトは次の訪問で必要なものを再構築します。
よくある質問
Service Workerを削除するとどうなりますか?
次に訪れたときサイトが新しい Worker を登録するだけです。それまでの間、そのサイトのオフラインアクセスとプッシュ通知が使えなくなります。ログアウトされるのは、Cookie も一緒に消した場合だけです。
ウェブサイトはなぜ私のPCにデータを保存するのですか?
ウェブアプリが瞬時に開き、オフラインで動き、タブを開かなくても通知を受け取れるようにするためです。ストアアプリのローカルキャッシュと同じ発想で、配達役がブラウザーになっているだけです。
購入前にライセンスの内容をご確認ください。
一度限りの 30 分試用では基本ツールを利用できます。PRO 機能は有料ライセンスを有効にするまでロックされています。
次に読む記事
お問い合わせ: [email protected]