用語解説

stale cacheとは?HTML共有・AI生成サイトでの意味をやさしく解説

「stale cache(古いキャッシュ)」は、有効期限が切れたにもかかわらずブラウザやCDNに残り続けるキャッシュデータのことです。AI生成HTMLをプレビュー共有した後にファイルを差し替えても、stale cacheがあると確認者は古い内容を見続けます。stale cacheが発生する原因と、それを意図的に制御する方法を理解しておくと、共有時の混乱を大幅に減らせます。

ひとことで言うと

キャッシュには有効期限(max-age)があり、期限が切れたキャッシュを「stale(古い)」と呼びます。stale cacheはそのまま削除されるとは限らず、`stale-while-revalidate`ディレクティブが設定されている場合、バックグラウンドで再確認しながら古いデータを一時的に提供し続ける動作をします。この仕組みはページを高速表示するために有用ですが、プレビュー確認では最新版が見えないという問題を起こします。

ブラウザキャッシュとCDNキャッシュの両方でstale cacheは発生します。ブラウザキャッシュはShift+F5でクリアできますが、CDNキャッシュは共有サービスの管理画面から手動でパージするか、ファイル名を変えて新しいURLを発行するしか対策がありません。どちらの層でstaleが起きているかを切り分けることが、トラブルシュートの第一歩です。

  • 相手がログインなしで開ける状態か確認する
  • PCとスマホで最低1回ずつ表示を確認する
  • 内部情報・個人情報・不要な外部送信が残っていないか見る
  • レビュー期限と修正時の差し替え方を決めておく

HTML共有で関係する場面

AIで生成した提案資料HTMLを「確認お願いします」と共有した後、フィードバックを受けてファイルを修正しアップロードし直した場合、Cloudflareなどのエッジキャッシュに旧バージョンが残っていると、確認者は何度リロードしても古い版を見続けます。この場合は管理画面の「Purge Cache」またはギガサイト便の差し替えアップロードでキャッシュを強制更新する必要があります。

stale-while-revalidateはNext.jsやAstroなどのフレームワークが自動設定することがあります。AI生成HTMLにフレームワークのビルド設定が含まれる場合、stale cacheの設定が混入している可能性があります。共有先で「表示が更新されない」という報告が来たら、開発者ツールのNetworkタブでステータスコードが「304 Not Modified」か「200」かを確認して、どの層でキャッシュされているかを判断してください。

よくある誤解

「stale cacheは悪いもの」と思われがちですが、適切に管理されたstale cacheはWebサイトのパフォーマンスを大幅に向上させます。`stale-while-revalidate`を使えばユーザーはキャッシュから即座にページを受け取り、同時にバックグラウンドで最新版の確認が走るため、遅延ゼロで鮮度も維持できます。問題が起きるのは「更新したことが意図せずキャッシュに隠される」場面だけです。

「ブラウザのキャッシュをクリアすれば必ず最新版が見える」は部分的に正しいですが、CDNレベルのキャッシュはブラウザ側でクリアしても取得できます。ブラウザとCDNの両方にキャッシュが存在するため、ブラウザクリアだけでは解決しないケースがあります。「自分の端末では最新版が見えるのに相手には古い版が見える」という現象がこのパターンです。

安全に使うための注意点

プレビュー共有では常に「最新版が届くこと」が最優先です。HTMLファイル名にバージョン番号(例:`proposal-v2.html`)かハッシュ(例:`proposal-a3b4c5.html`)を含めることで、差し替え時に自動的に別のURLになり、stale cacheの影響を完全に排除できます。この方法だと確認者に新しいURLを送り直す手間が生じますが、「古い版を見ている」というトラブルはゼロにできます。

stale-while-revalidateを長期間に設定した共有ページは、頻繁に更新が発生するプレビュー用途には向きません。プレビュー用のURLと最終公開用のURLを分けて管理し、プレビューにはキャッシュを短く設定するか無効化する運用が理想的です。ギガサイト便のような共有サービスではキャッシュ設定をサービス側が管理するため、差し替え後の確認はシークレットモードで行うのが確実です。

よくある質問

stale cacheとexpired cacheの違いは何ですか?

expired cacheは有効期限が過ぎたキャッシュ全般を指し、stale cacheはその中でもまだ削除されずに使われている状態を指します。stale-while-revalidateが設定されている場合、期限切れでも一定期間は配信されます。

確認者に「最新版を見てください」と伝える際の最も確実な手順は?

シークレットモード(Chromeならシフト+Ctrl+N)で共有URLを開き直してもらうのが最も手軽です。それでも変わらない場合はCDNキャッシュが残っているため、管理画面からキャッシュパージを行うか、新しいURLで共有し直してください。

stale-while-revalidateはHTML共有サービスで使うべきですか?

更新頻度が高いプレビュー共有には向きません。最終公開済みの静的コンテンツや、更新が月1回以下の案内ページには有効ですが、レビュー中のHTMLには短いmax-ageかno-storeを設定することをおすすめします。

関連記事

「用語解説」の記事をもっと見る →