おーみんブログ

C#, ASP.NET Core, Unityが大好きです。

Cache-Controlヘッダについて勉強してみた。

はじめに

Cache-Controlについて学ぶ機会があったので備忘録として残しておきたいと思います。

今回は以下の記事を参考にさせていただきました。

www.ipa.go.jp

developer.mozilla.org

Cache-Controlヘッダのレスポンスディレクティブ

以下にそれぞれのディレクティブの意味する内容について記載していきます。

  • Cache-Control: public
    Cache-Controlヘッダのディレクティブをpublicにした場合、共有サーバ(CDN等)へレスポンスをキャッシュします。
    Authorizationヘッダの情報なども関係なく共有サーバへキャッシュするため、個人情報などを扱う場合はpublicを設定してはいけません。

  • Cache-Control: private
    Cache-Controlヘッダのディレクティブをprivateにした場合、共有サーバではなく、個人の環境のみ(ローカルへのキャッシュ等)にしかキャッシュされなくなります。
    個人情報等を扱う場合はこのディレクティブを忘れないようにしましょう。

  • Cache-Control: no-cache
    Cache-Controlヘッダのディレクティブをno-cacheにした場合、「キャッシュはするが利用する前にWebサーバへそのキャッシュを使っていいのか問い合わせをせよ!」という意味になります。
    名前的に「キャッシュしない」を表しているようにも見えますが、厄介なことにそういうわけではありません。似たようなディレクティブにmust-revalidateというものがありますが、それとの違いについては以下の記事がとても分かりやすかったです。

www.ryotosaito.com

  • Cache-Control: no-store
    Cache-Controlヘッダのディレクティブをno-storeにした場合、キャッシュはされません。

  • Cache-Control: max-age
    Cache-Control: max-age=xx (xxは秒数)のような使い方をしますが、レスポンスのキャッシュ期間を表しています。

※今回5つのディレクティブの説明を書きましたが、それぞれ複数の設定が可能であり、Cache-Control: private, max-age=100のような書き方が可能です。

おわりに

以上でCache-Controlヘッダに関する備忘録でした。
今回調べてみて思ったのですが、上記以外もまだまだディレクティブがあるので引き続き学習していきたいと思います!