CloudFrontで全利用者に共通の公開画像を配信する。同じpathでもクエリv=1とv=2でオリジンの画像が変わり、utm_source等の追跡クエリは画像を変えないことを確認済みである。Cookieや他headerによる版の違いはない。
正しいvの画像を返しながら追跡クエリによる不要なキャッシュ分割を減らしたい。キャッシュ可能な応答とTTLを準備済みで、非公開・認証別のコンテンツは対象外とする。
対象cache behaviorのクエリ設定はどうするか。
内容を変えるvをキーへ含め、追跡用クエリを除外して正しい版とキャッシュ再利用を両立する。
詳細解説
vで内容が変わるので、キーから除くと異なる版の応答が混在する可能性がある。ヒット率だけでなく正しい表現の分離が必要である。
originへの転送だけではキャッシュキーは分かれない。キャッシュヒット時にoriginへ行かず、別vのキャッシュを返す可能性がある。
内容を変えるvの値で版を分け、内容に影響しない追跡値では分割しない。cache policyのキーに含まれる値はオリジン要求にも自動で含まれる。
正しいvは区別できても、内容が同じ追跡値の違いでキャッシュを分割する。本問の不要な分割を減らす要件を満たさない。
公式資料で確認する
以下の項目を公式資料の記述と照合して確認します。
承認された検証distributionの適用behavior・cache policy・origin request policy・TTLを確認する。同じpathとheaderでvを固定して追跡値だけを変える要求と、vを変える要求を比較し、応答内容・X-Cache・originログを照合する。
参考にした公式資料
確認できる内容
同じvの追跡値違いは同じキーを使い、異なるvは別キーで正しい画像を返す。実Hit/MissはTTLやPOP、キャッシュ状態も確認し、転送設定だけでキャッシュが分かれたとは判断しない。
理解のポイント
- CloudFront cache policy
- origin request policy
- キャッシュキー
確認時の注意
- 確認環境: AWS公式SOA-C03試験ガイドとAWS公式ドキュメントの確認
- AWS公式SOA-C03試験ガイドと各サービスの公式ドキュメントを確認する。
基礎のおさらい
内容を変える値を残す
vが応答画像を変えるので、cache policyでvという名前を選ぶとその値がキーに入る。utm_source等が内容を変えない前提で追跡値をキーから外す。応答を変える全ての要素を無条件に除いてよいわけではない。
転送とキーの分割を区別する
cache policyでキーに入れたvはorigin要求にも含まれる。origin request policyはキーを変えずに追加情報を転送できるが、vをそこだけに入れても表現別のキャッシュにはならない。
behaviorと実際のキャッシュ状態を確認する
要求pathに適用されるbehaviorとpolicyを確認し、同一条件で応答内容とX-Cache、originログを比較する。同じキーでもTTL切れや別POP、キャッシュ状態でMissになり得る。公開静的コンテンツの本問を認証別・ユーザー別応答へそのまま広げない。