ある企業が Amazon CloudFront を使ってウェブサイトを配信していますが、ユーザーから「ページの読み込みが遅い」との苦情が増えています。CloudFront のモニタリングを確認したところ、キャッシュヒット率が 25% と非常に低く、ほとんどのリクエストがオリジンサーバー(ALB + EC2)に到達していることが分かりました。アプリケーションの変更を最小限に抑えながら CloudFront のキャッシュヒット率を向上させる方法として最も適切なものはどれですか?
- A. ALB の前段に ElastiCache を追加してアプリケーション層のキャッシュを実装し、オリジンの応答速度を改善する
- B. CloudFront キャッシュポリシーを見直し、不要なクエリパラメーターや Cookie をキャッシュキーから除外する。Cache-Control ヘッダーをオリジンで適切に設定し、静的コンテンツの TTL を延ばす。CloudFront の Origin Shield を有効化して、オリジンへのリクエスト数をさらに削減する
- C. CloudFront のディストリビューションを削除して Route 53 で直接オリジンに接続し、ALB の性能を改善する
- D. Lambda@Edge を追加してすべてのリクエストをオリジンに転送し、レスポンスをキャッシュする前に動的に加工する
解答と解説を見る
正解: B
キャッシュヒット率の低下の主な原因は、不必要なクエリパラメーターや Cookie がキャッシュキーに含まれていることです。これにより同じコンテンツが異なるキャッシュエントリとして扱われます。不要なキャッシュキーを除外し、Cache-Control ヘッダーで適切な TTL を設定することでヒット率が大幅に向上します。Origin Shield はキャッシュの中間層として追加のキャッシュ効果を提供します。 C: CloudFront を削除することはパフォーマンスをさらに悪化させ、CDN の恩恵を失います。 D: Lambda@Edge でリクエストをオリジンに転送することはキャッシュヒット率の改善に逆効果で、処理コストも増加します。 A: ElastiCache はアプリケーション層のキャッシュを改善しますが、CloudFront のキャッシュヒット率(エッジでの命中)の問題には直接対応しません。CloudFront の設定変更なしでは改善が限定的です。
📚 関連サービスの解説: Amazon CloudFront