概要
- 以前は CloudFront ではキャッシュ設定を個別のパスに対する Behavior でTTL設定などを毎回設定する必要があった
- 設定に
Use a cache policy and origin request policy
の選択肢が現れ、cache policy を作って使い回せるようになった
もっともベーシックなCache Policy と Origin Request Policy
以下のようにすでに組み込み(Managed)な Cache Policy が利用可能です。
既存の Policy の設定を見ることで、どういう設定ができるかみていきます。
Cache Policy
- Managed-CachingOptimized
- TTL Settings
- 設定値
- Minimum TTL => 1
- Maximum TTL => 31536000
- Default TTL => 86400
- 意味
- サーバサイドから返しているキャッシュ関連ヘッダ(Cache-Control max-age など)とTTLの関係についてはこちらが参考になります
-
Cache-Control max-age
がサーバサイドから帰ってきているケースだと、TTLのレンジに収まっていればそれが使われ、収まっていなければTTLが優先されるようです - CloudFrontがレスポンスヘッダを書き換えるわけではないので、クライアントから見える
Cache-Control max-age
が書き換わっているわけではないので、実際に設定したTTLが適用されているかは確認できませんでした
- 設定値
- Cache key contents (The cache key includes the headers, cookies, and query strings in the cache policy, as follows)
- 設定値
- Headers => None
- Cookies => None
- Query strings => None
- 意味
- CachingOptimizedという名前がついている通り、上記の設定が一番最適化されたものです
- レスポンスヘッダ、クッキー、クエリストリングの特定のものが入っているかどうかでキャッシュを分岐することができますが、それを設定しないということは、全てのリクエストが同じパスであれば同じキャッシュを見ることを意味します
- ファイルを差し替えるとき、ファイル名を変更しないでクエリストリングだけ変更してキャッシュ揮発させることを期待している場合には、
Query Strings
の設定はNone
ではダメで、All
設定をいれておかなければいけないと思います
- 設定値
- TTL Settings
Origin Request Policy
- Managed-AllViewer
- Origin request contents
- 設定値
- Headers => All viewer headers
- Cookies => All
- Query strings => All
- 意味
- オリジンサーバに対してCloudFrontからどの情報を流すかを示しているようです
-
Headers
のAll viewer headers
は、クライアントが送ってきたヘッダをそのままオリジンに渡す設定です。Origin Request Policy を新たに作成すれば、CloudFrontが後から付与するヘッダなどもオリジンに流せるようです
- 設定値
- Origin request contents
キャッシュ設定の反映確認
キャッシュ設定をする前は以下のように Miss From cloudfront になっていると思います。
Hit from CloudFront になります。