DNSが死んでいるのにサイトが自分だけ表示され続けるのはなぜか
本来ならDNS(=ドメイン名をIPアドレスに変換する仕組み)が死んでいるはずなのに、特定のPCのChromeではF5(再読み込み)を押しても表示され続けることがある。これは不具合ではなく、ブラウザがネットワークを使わずに手元の複製から意図的に応答している状態だ。
ブラウザのHTTPキャッシュ
ブラウザのHTTPキャッシュは、一度読み込んだHTML・CSS・画像などをローカルに保存し再利用する仕組みである。サーバーの応答ヘッダー(Cache-ControlやExpires)が指定する期間は、ネットワークに出ずに保存済みデータを返す。
ただしHTTPキャッシュは、再読み込み(F5)時には多くの場合サーバーへ再検証(=まだ新しいかをサーバーに確認すること)を試みる。DNSが死んでいれば確認できないため、本来はエラーになるはずである。それでも表示され続けるなら、別の仕組みが働いている。
Service Worker——ブラウザに常駐する配達係
Service Worker(=ページとは独立してブラウザの裏側で動く小さなJavaScriptプログラム)は、配達係にたとえるなら、初回訪問時にサイト全体を自分の倉庫(Cache Storage)に保管し、以降はネットワークに出る前に倉庫から応答できる。
fetchイベントが発生する- Service Workerがそれをインターセプト(=横取り)する
- Cache Storageに一致があるか
- あり:キャッシュから応答する(ネットワーク不要)
- なし:ネットワークへフォールバック(=代替手段に切り替えること)する
つまりDNSが死んでいても、Service Workerが生きていて倉庫にデータがあれば画面は表示される。ただし表示されるのは、最後に正常接続できた時点の古いバージョンである。
PWAとService Workerの登録
PWA(Progressive Web App)は、Service WorkerとManifestファイル(=アプリの設定情報を記した定義ファイル)を使い、ネイティブアプリのようにインストール可能・オフライン動作可能にしたWebサイトである。vite-plugin-pwaやWorkbox(GoogleのService Worker用ライブラリ群)で構築されることが多い。Service Workerの有効化(registerSW)を本番環境限定にする設定も一般的で、開発中はこの挙動の違いに気づきにくい。
SPAと生き残るタブ
SPA(Single Page Application)は、最初の1回だけHTMLを読み込み、以降はJavaScriptが同じタブ内で画面を切り替えるアプリである。一度読み込まれると、タブを閉じない限り前の画面はメモリに残り続けるため、タブを開いたままにしていればDNSが死んだ後も表示が維持される。
リダイレクトガードの波及
リダイレクトガードとは、あるドメインを開いた時に別のドメインへ自動転送する仕組み(HTTPの301/302応答、またはフレームワークのルーティング設定)である。転送先のDNSが死んでいる場合、入り口がどこであっても最終的に「繋がらない」という波及的な障害になる。
原因の切り分け——シークレットウィンドウを使う
シークレット(プライベート)ウィンドウは、Service Worker・HTTPキャッシュ・Cookie・セッションのすべてが無効化された、まっさらなブラウザセッションである。
| 状況 | 通常ウィンドウ | シークレットウィンドウ |
|---|---|---|
| DNSが死んでいる、SW・キャッシュあり | 表示される | 繋がらない |
| DNSが生きている | 表示される | 表示される |
シークレットで「繋がらない」なら、通常ウィンドウで見えているのはキャッシュかService Workerのおかげだと確認できる。世界から見れば、そのサイトは落ちている。
まとめ
「自分だけ見える」ことと「世界から繋がる」ことは別問題である。Service Workerは過去の倉庫から応答しているにすぎず、新しいPC・別の人・シークレットウィンドウでは表示されない。まずシークレットウィンドウで確認するのが最初の一手である。Service Workerを強制的に削除するには、ChromeのDevTools → Application → Service Workers → Unregisterで解除する。
関連ノート
- Agentic Commerce — ACP and Visibility into Being 'Bought by AI'
- browser-to-api — a Browserbase skill that turns a site into OpenAPI from a CDP trace
- Safe tenant-scoped writes to a cloud database — connection, authentication and RLS in one go
- Cloudflare Wrangler and Pages Functions — the deployment tool and the Functions bundle
- Introduction to the Digital Architect (00) — the reality of the profession and the big picture of an original textbook series
- The textbook for becoming a digital architect — table of contents (learning roadmap)