surfup

リリース後にCDNとブラウザーのキャッシュを確認する

古いHTMLがエッジキャッシュとブラウザーキャッシュのどちらから配信されているかを調べます。

CDNのキャッシュを消去しても、訪問者のブラウザーに保存済みのファイルは消えません。広範囲な消去やキャッシュTTLの延長を行う前に、レスポンス経路を確認してください。

HTMLとバージョン付きアセットを比較する

  • 新しいブラウザーセッションから対象ページとアセットを正確にリクエストします。ステータス、Age、Cache-Control、ETag/Last-Modified、存在する場合はCDNのキャッシュ状態ヘッダーを記録します。
  • HTMLがページ移動時に再検証され、コンテンツハッシュ付きJS/CSSが長期キャッシュを使うことを確認します。変更されるURLにimmutableや1年のポリシーを適用しないでください。

古いレイヤーだけを消去する

  • CDNが古いバイト列を返す場合は、正確なURLまたはバージョンだけを消去し、2つのネットワークから再確認します。特定のブラウザーだけが古い場合は、エッジルールを変更する前に新しいプロファイルでテストします。
  • 変更後、ログイン中のページと公開ページを別々に確認します。個人向けレスポンスを共有キャッシュに入れないでください。ヘッダーを保存し、変更前のルールのロールバックを用意します。

例と期待される結果

  • ページには curl -sS -D page.headers -o page.html PAGE_URL を実行します。ハッシュ付きアセットには asset.headers や asset.bin のような別名を使います。保存した page.html を調べるか、ビルド識別子をオリジンと比較します。デプロイ後に両方のGETリクエストを再度実行し、Age とCDN状態ヘッダーを比べます。Cache-Control と ETag も確認します。HTMLがデフォルトでキャッシュされない場合があるため、まずサイトの実際のルールを調べます。
  • ブラウザープロファイル1つだけが古い場合は、サービスワーカーとローカルキャッシュを確認します。CDNが古いHITを返す場合は、影響するパスだけを消去し、新しいプロファイルで再テストします。オリジンも古い場合は、先にデプロイ/オリジンを修正します。無関係なパスは消去しないでください。

一次情報