状況
Docker構築練習をしている際、
古いコンテナを止めて終了したにも関わらず、
localhostを開くと
localhost接続のURLが古いもののままでした。
旧:localhost/tutorial
新:localhost
新しいURLを入力しても旧いURLが表示される...
当然なのだが、コンテナは止まっているためNotFoundとなる。
(どうやら/tutorial 配下にファイルはないかららしい)
なぜなのだ...
ブラウザとしてEdgeを使っていたのですが、
Chromeに変えるとなんと正常に表示されました。
ChatGPT5君に聞いたところ
原因は Edge の 301 リダイレクトキャッシュ でした。
原因:Edge の 301 キャッシュ
HTTP ステータスコード 301 (Moved Permanently) は「恒久的な移動」を意味し、
ブラウザはこの情報をキャッシュします。
開発中の一時的な設定変更でも、301 を返すと 以降は設定を直しても飛び続ける という厄介な性質があります。
対策方法
開発中は恒久リダイレクトを避ける
Apache/Nginx で開発時は 302(または307)リダイレクト を使うとよいそうです。
301は本番向けのキャッシュ用ステータスです。
原因
/ -> /tutorial の 301(Moved Permanently) はブラウザが強力にキャッシュします。
Chrome ではキャッシュがなくなった(or そもそも未保存)ため / が見える一方、Edge だけが 過去の 301 を保持 → いまだに /tutorial へ飛ぶ、という典型パターン。
確認 & 解消(Edge)
Edge で F12 → Network → “Disable cache” にチェック → ハードリロード(Ctrl+F5)。
わからないこと
Networkのステータスの200や400はかろうじてわかりやすいが、300系はまるで分らない。
キャッシュとは何か、微妙にわからない
気づき
ネットワークの知識、大切!