Amazon CloudFront ディストリビューションでオブジェクトをキャッシュする時間を指定したかったので、オリジンに Cache-Control または Expires ヘッダーを追加しました。しかし、CloudFront は、指定した期間、オブジェクトをキャッシュしません。あるいは、CloudFront は一切キャッシュしません。このような問題が発生している理由は何ですか?

Cache-Control ヘッダーまたは Expires ヘッダーに設定したディレクティブが互いに矛盾していないことを確認してください。ベストプラクティスとして、Expires ヘッダーの代わりに Cache-Control max-age ディレクティブを使用してください。両方に値を指定した場合、CloudFront は Cache-Control max-age に設定した値のみを使用します

さらに、CloudFront ディストリビューションで設定した Minimum TTL (最小 TTL)、Default TTL (デフォルト TTL)、および Maximum TTL (最大 TTL) が Cache-Control ヘッダーまたは Expires ヘッダーと競合しないことを確認してください。

これらの cache-duration (キャッシュ時間) 設定が互いに矛盾する場合、CloudFront は Cache-Control ヘッダーまたは Expires ヘッダーに設定した時間にオブジェクトをキャッシュしないか、一切キャッシュしない可能性があります。互いに矛盾する cache-duration 設定の例は避けてください。

  • [Maximum TTL (最大 TTL)] に 5 分 (300 秒) を設定し、Cache-Control max-age ヘッダーに 1 時間 (3600 秒) を設定した場合、CloudFront は 1 時間ではなく 5 分間、オブジェクトをキャッシュします。
  • Cache-Control max-age ヘッダーに 3 時間を設定し、Expires ヘッダーを 1 か月に設定した場合、CloudFront は 1 か月ではなく 3 時間オブジェクトをキャッシュします。
  • [Default TTL (デフォルト TTL)]、[Minimum TTL (最小 TTL)]、および [Maximum TTL (最大 TTL)] に 0 秒を設定した場合、CloudFront は常にオリジンからの最新コンテンツがあることを確認します。

重要: キャッシングヘッダーを使用してオリジンアセットを更新すると、CloudFront がオリジンに新しいリクエストを送信した後にのみ、CloudFront が変更を反映します。キャッシュされたアセットがエッジロケーションで期限切れになると、CloudFront はオリジンに新しいリクエストを送信し、ディストリビューションはそのアセットに対する新しいリクエストを受け取ります。キャッシュされたアセットが期限切れになる前に CloudFront が更新を反映する必要がある場合は、キャッシュを無効にすることができます。


このページは役に立ちましたか? はい | いいえ

AWS サポートナレッジ センターに戻る

サポートが必要ですか? AWS サポートセンターをご覧ください

公開日: 2018 年 4 月 9 日

更新日: 2019 年 3 月 24 日