Cache-Controlヘッダービルダー

ビジュアルフォームでCache-Controlヘッダーを構築。ディレクティブを切り替え、期間を設定し、すぐに使えるサーバー設定スニペットをエクスポートします。

このツールについて

Cache-Controlヘッダービルダーは、仕様を暗記しなくてもCache-Control HTTPレスポンスヘッダーを構築できる無料のブラウザベースツールです。 Cache-Controlは、ブラウザ、CDN、プロキシキャッシュがレスポンスを 保存・配信する方法を制御する主要なメカニズムです。適切に調整された キャッシュ戦略は、サーバー負荷を大幅に削減し、帯域コストを下げ、 エンドユーザーのページ読み込み時間を高速化します。

その重要性にもかかわらず、Cache-Controlヘッダーを手書きすることは 意外に難しいです。ディレクティブは微妙な方法で相互作用します。例えば、 no-cacheは「キャッシュしない」という意味ではなく(それは no-storeです)、max-age=0, must-revalidateは古いコンテンツに 関するエッジケースでno-cacheとは異なる動作をします。このツールは、 すべてのディレクティブにトグルスイッチ、時間ベースの値に期間プリセット、 ブラウザとCDNがキャッシュされたレスポンスを時間の経過とともにどのように 扱うかを示すリアルタイムのビジュアルタイムラインを提供することで、 混乱を解消します。

このビルダーは標準的なCache-Controlディレクティブをすべてカバーしています: publicprivateno-cacheno-storemax-ages-maxagemust-revalidateproxy-revalidateno-transformimmutablestale-while-revalidatestale-if-error。ワンクリックのプリセット5種類(静的アセット、 APIレスポンス、HTMLページ、プライベートユーザーデータ、キャッシュなし) により、要件に合わせてカスタマイズ可能な合理的な出発点が得られます。

すべての処理はクライアントサイドのJavaScriptを使用してブラウザ内で完結します。 データがサーバーに送信されることはないため、内部システムや本番システムの キャッシュ設定を安全に試すことができます。ヘッダーが完成したら、 HTTPヘッダーアナライザー で他のレスポンスヘッダーと合わせて効果を確認するか、 CSPヘッダー生成ツール で付随するセキュリティヘッダーを生成してください。完全なHTMLメタデータには、 メタタグ生成ツール がキャッシュ関連のmetaタグの設定にも役立ちます。

使い方

  1. プリセットボタン(静的アセット、APIレスポンス、HTMLページ、プライベートユーザーデータ、キャッシュなし)をクリックしてすぐに始めるか、ゼロから構築します。
  2. 各セクション(キャッシュ可能性、有効期限、再検証、その他、古いコンテンツ)のスイッチを使用して個々のディレクティブをオン・オフします。
  3. 時間ベースのディレクティブ(max-ages-maxagestale-while-revalidatestale-if-error)は、期間プリセット(1m、1h、1d、1w、1y)をクリックするか、秒数でカスタム値を入力します。
  4. 右側に生成されたCache-Controlヘッダーを確認します。完全なCache-Control: ...文字列がリアルタイムで更新されます。
  5. キャッシュ動作タイムラインでフレッシュ、stale-while-revalidate、stale-if-errorのフェーズを視覚化します。
  6. NginxApacheExpress.jsタブを切り替えて、すぐに貼り付けられるサーバー設定スニペットを取得します。
  7. Copy Header(またはCtrl+Shift+C)をクリックして出力をクリップボードにコピーします。

よくある質問

Cache-Controlヘッダーとは何ですか?

Cache-Controlは、ブラウザ、CDN、プロキシキャッシュにレスポンスの保存と配信方法を指示するHTTPレスポンスヘッダーです。レスポンスをキャッシュできるかどうか、どのくらいの期間フレッシュに保つか、古くなったときにどうするかを制御します。HTTPキャッシングにおいて最も重要なヘッダーです。

no-cacheとno-storeの違いは何ですか?

no-cacheはキャッシュがレスポンスを保存できますが、配信する前にオリジンサーバーで再検証(ETagやLast-Modifiedを使用)する必要があることを意味します。no-storeはキャッシュがレスポンスのいかなる部分も保存してはならないことを意味します。完全にキャッシュを防止したい場合はno-storeを使用します。条件付きリクエスト(304 Not Modified)の恩恵を受けながら毎回フレッシュさを確保したい場合はno-cacheを使用します。

s-maxageとは何ですか?いつ使うべきですか?

s-maxage(shared max-age)はCDNやリバースプロキシなどの共有キャッシュに対してmax-ageをオーバーライドします。ブラウザはローカルキャッシュにmax-ageを使用し続けます。短いブラウザキャッシュ(例:max-age=60)と長いCDNキャッシュ(例:s-maxage=3600)を両立させたい場合に便利です。CDNは1時間コンテンツを配信し、ブラウザは毎分更新を確認します。

immutableディレクティブは何をしますか?

immutableディレクティブは、レスポンスボディがフレッシュ期間中に変更されないことをブラウザに伝えます。これにより、ユーザーがページを明示的にリロードしても、ブラウザは条件付き再検証リクエスト(If-None-Match / If-Modified-Since)を送信しません。コンテンツハッシュファイル名を使用するバージョン付き静的アセット(例:app.a1b2c3.js)に最適です。

stale-while-revalidateはどのようにパフォーマンスを向上させますか?

stale-while-revalidateは、バックグラウンドでオリジンからフレッシュなコピーを非同期に取得しながら、キャッシュが古いレスポンスを即座に配信することを可能にします。ユーザーは即座にレスポンスを取得し(やや古い可能性がありますが)、後続のリクエストは更新されたバージョンを取得します。毎回完全にフレッシュである必要がないコンテンツの体感パフォーマンスを劇的に向上させます。

データは安全ですか?

はい。すべてのヘッダー生成はクライアントサイドのJavaScriptを使用してブラウザ内で完全に行われます。ディレクティブの選択、期間値、生成されたヘッダーを含むいかなるデータもサーバーに送信されることはありません。本番システムのキャッシュ設定を、プライバシーの懸念なく安全に試すことができます。

publicとprivateのどちらを使うべきですか?

レスポンスがすべてのユーザーで同じでCDNや共有プロキシにキャッシュできる場合は'public'を使用します(例:静的アセット、公開APIデータ)。レスポンスにユーザー固有のデータが含まれ、ユーザーのブラウザにのみキャッシュすべき場合は'private'を使用します(例:パーソナライズされたページ、認証済みAPIレスポンス)。どちらも指定されない場合、Authorizationヘッダーを含むリクエストのレスポンスはデフォルトでprivateとして扱われます。

関連ツール