日曜日, 5月 25, 2025
ホームニューステックニュースAWS CloudFront キャッシュポリシーのチューニングベストプラクティス【パフォーマンス&コスト最適化】 #SRE - Qiita

AWS CloudFront キャッシュポリシーのチューニングベストプラクティス【パフォーマンス&コスト最適化】 #SRE – Qiita



AWS CloudFront キャッシュポリシーのチューニングベストプラクティス【パフォーマンス&コスト最適化】 #SRE - Qiita

はじめに

AWS CloudFrontは、グローバルCDNとしてWebサイトやAPIの高速化に寄与するサービスです。

中でも「キャッシュポリシー」は、CloudFrontの挙動とオリジンへの負荷、さらにはAWS WAFなどの課金にも直接影響する重要な構成要素です。

本記事では、CloudFrontのキャッシュポリシーをパフォーマンス・コスト・運用性の観点からチューニングするためのベストプラクティスを紹介します。


キャッシュポリシーとは?

CloudFrontが

  • 何をキーとしてキャッシュするか
  • どれくらいの期間キャッシュするか
  • クエリ/Cookie/ヘッダーをどう扱うか

などを定義する設定です。


基本構成と項目説明

設定項目 役割 よくある設定値
TTL (Time to Live) キャッシュの生存期間 default=86400, min=60, max=31536000
クエリ文字列 キャッシュキーに含めるクエリ None / All / Include List
Cookie キャッシュキーに含めるCookie None / Include List
HTTPヘッダー キャッシュキーに含めるヘッダー None / Include List
圧縮 Gzip/Brotli圧縮対応 Enabled

チューニングベストプラクティス

🔧 1. 静的コンテンツは極力キャッシュする

対象:JS, CSS, 画像, Webフォント など

  • キャッシュポリシー:CachingOptimized(または同等のカスタム)
  • TTL:86400秒以上推奨
  • Cookie/クエリ/ヘッダー:含めない(None)
Behavior: /static/*
→ 高速表示 + オリジン負荷削減 + WAFリクエスト数も削減

🔧 2. 動的APIエンドポイントはキャッシュしない

対象:POST API, 認証系、パーソナライズ要素あり

  • キャッシュポリシー:CachingDisabled
  • TTL:0
  • Cookie/クエリ/ヘッダー:必要最小限
Behavior: /api/*
→ 毎回オリジンへリクエスト、キャッシュ非活用

🔧 3. 言語別・地域別ページの分離(国際対応)

対象:Accept-Language, CloudFront-Viewer-Country ヘッダー

  • キャッシュキーに必要なヘッダーを含める
  • カスタムキャッシュポリシーを利用
例:日本語/英語ページを分離してキャッシュ

🔧 4. ファイル名にハッシュを埋め込み、キャッシュ長期化

対象:JS/CSSなど頻繁に更新される静的ファイル

  • ファイル名例:app.83cc0fe.js
  • max-age=31536000, immutable などと組み合わせてキャッシュ破棄不要に

キャッシュポリシー適用例(Terraform)

resource "aws_cloudfront_cache_policy" "optimized" {
  name = "MyOptimizedPolicy"

  default_ttl = 86400
  max_ttl     = 31536000
  min_ttl     = 60

  parameters_in_cache_key_and_forwarded_to_origin {
    cookies_config {
      cookie_behavior = "none"
    }

    headers_config {
      header_behavior = "none"
    }

    query_strings_config {
      query_string_behavior = "none"
    }

    enable_accept_encoding_brotli = true
    enable_accept_encoding_gzip   = true
  }
}

モニタリングと改善

  • CloudFrontのCacheHitRate(CloudWatch)を監視
  • S3アクセスログ+Athenaでキャッシュミスのパターンを解析
  • キャッシュキーを複雑にしすぎない(分散しすぎ注意)

まとめ

  • キャッシュポリシーはCloudFrontの性能とコストに直結する
  • 静的コンテンツは積極的にキャッシュ、有効期限は長めに
  • 動的APIはキャッシュしない
  • キャッシュキーに含める要素は最小限が原則
  • CloudFront + WAF連携時はキャッシュによりWAF課金も最適化できる

参考リンク





Source link

Views: 2

RELATED ARTICLES

返事を書く

あなたのコメントを入力してください。
ここにあなたの名前を入力してください

- Advertisment -

インモビ転職