Cache-Controlヘッダについて勉強してみた。
はじめに
Cache-Controlについて学ぶ機会があったので備忘録として残しておきたいと思います。
今回は以下の記事を参考にさせていただきました。
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
というものがありますが、それとの違いについては以下の記事がとても分かりやすかったです。
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ヘッダに関する備忘録でした。
今回調べてみて思ったのですが、上記以外もまだまだディレクティブがあるので引き続き学習していきたいと思います!