1. ホーム
  2. amazon-web-services

[解決済み] CloudFrontのTTL 0は何のためにあるのか?

2023-07-11 18:53:31

質問

数週間前、Amazonがコンテンツの有効期限を引き下げたと発表しました。

Amazon CloudFront がコンテンツの最小有効期限を引き下げました。

CloudFrontのTTLを0に設定することができます。 そこで質問ですが、なぜTTLを0に設定したCloudFrontディストリビューションを持つことが有用なのでしょうか? 私にとっては、これはキャッシュが全くないことを意味するので、CloudFrontに届くすべてのリクエストはオリジンを叩くことになります。

私は何を見逃しているのでしょうか?

どのように解決するのですか?

この新機能は Amazon CloudFront は、実際に多くのユースケースで非常に有用であり、その理由は オリジンを叩く は一見したところとは少し違っていて、必ずしも問題ではないからです。この機能は以前からリリースされていましたが、最近リリースされた Amazon CloudFront - ダイナミック コンテンツのサポート のリリースと一緒になっています。

可変TTL(Time-To-Live) - 多くの場合、動的なコンテンツは キャッシュできないか、または非常に短い期間、おそらく数秒間だけキャッシュ可能です。 多くの場合、動的なコンテンツはキャッシュできないか、または非常に短い時間、おそらく数秒だけキャッシュ可能です。過去には、CloudFrontの最小TTLは60分でした。 分であり、すべてのコンテンツは静的と見なされていました。新しい最小TTL 値は 0 秒です。 特定のオリジンに対するTTLを0に設定した場合。 CloudFront はまだコンテンツをキャッシュします をそのオリジンからキャッシュします。 その後 If-Modified-Since ヘッダを持つ GET リクエストを行います。 を行い、それによって 原点回帰のチャンス のシグナルを送り、CloudFrontがキャッシュされたコンテンツを使い続けることができるようにします。 キャッシュされたコンテンツがオリジンで変更されていなければ . [強調].

言い換えれば、0 の TTL を使用することは、主に CloudFront がキャッシュ制御の権限をオリジンに委譲すること、つまり CloudFront がオブジェクトをキャッシュするかどうか、またどのくらいの期間キャッシュするかをオリジンサーバーが決定することを意味します。 GETリクエストにIf-Modified-Sinceヘッダがある場合 は、必ずしもオブジェクト自体がオリジンから取得されることを意味するわけではなく、オリジンが HTTP ステータス コード 304 - 未修正 を返すことができます。

リソースが最後にリクエストされて以来、変更されていないことを示します。[...] これを使うと、サーバとクライアントの両方で帯域幅と再処理が節約できます。 ヘッダデータのみを送受信する必要があるため、サーバとクライアントの両方で帯域幅と再処理を節約できます。 になります。 ページ全体がサーバーで再処理されるのに比べて サーバで再処理され、サーバとクライアントの帯域幅を使用して再度送信されるのに比べて、ヘッダー データのみを送受信する必要があるためです。 [

Mark Nottinghamの素晴らしい キャッシュチュートリアル をご覧ください。HTTP キャッシュ制御の仕組みと利点、HTTP アーキテクチャの本当に重要で効果的な部分についての詳細です。

これらの部品がどのように連携して動作しているかを理解することは、実に難しいことです。 CloudFront がダウンロード配布のオブジェクトをキャッシュする最短時間の指定 内の表 CloudFront Edge Cacheにオブジェクトが保存される期間を指定する(オブジェクトの有効期限) は、特にTTL = 0の有無にかかわらず、CloudFrontのコンテキストに適用した場合の効果をまとめようと試みています。