CloudFront キャッシュから直接提供されるリクエストの割合を増やす (キャッシュヒット率) - Amazon CloudFront

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

CloudFront キャッシュから直接提供されるリクエストの割合を増やす (キャッシュヒット率)

コンテンツのためにオリジンサーバーにアクセスする代わりに、 CloudFront キャッシュから直接提供されるビューワーリクエストの割合を増やすことで、パフォーマンスを向上させることができます。これは、キャッシュヒット率の向上として知られています。

以下のセクションでは、キャッシュヒット率を改善する方法について説明します。

がオブジェクトを CloudFront キャッシュする期間を指定する

キャッシュヒット率を向上させるには、Cache-Control max-age ディレクティブをオブジェクトに追加し、max-age に対して最も長い実用的な値を指定するようにオリジンを設定します。キャッシュ期間が短いほど、オブジェクトが変更されているかどうかを判断し、最新バージョンを取得するための CloudFront リクエストをオリジンに送信する頻度が高くなります。stale-while-revalidate および stale-if-error ディレクティブで max-age を補足すると、特定の条件下でのキャッシュヒット率をさらに向上させることができます。詳細については、「コンテンツがキャッシュに保持される期間 (有効期限) の管理」を参照してください。

Origin Shield の使用

CloudFront Origin Shield は、オリジンの前に追加のキャッシュレイヤーを提供するため、 CloudFront ディストリビューションのキャッシュヒット率を向上させるのに役立ちます。Origin Shield を使用すると、 のすべての CloudFrontキャッシュレイヤーからオリジンへのすべてのリクエストは 1 つの場所から送信されます。 は Origin Shield からの 1 つのオリジンリクエストを使用して各オブジェクトを取得 CloudFront でき、キャッシュの CloudFront他のすべてのレイヤー (エッジロケーションとリージョン別エッジキャッシュ) は Origin Shield からオブジェクトを取得できます。

詳細については、「Amazon CloudFront Origin Shield の使用」を参照してください。

クエリ文字列パラメータに基づくキャッシュ

クエリ文字列パラメータに基づいてキャッシュ CloudFront するように を設定する場合、次の操作を行うとキャッシュを改善できます。

  • オリジンが一意のオブジェクトを返すクエリ文字列パラメータのみを転送する CloudFront ように を設定します。

  • 同じパラメータのすべてのインスタンスで大文字と小文字の区別を統一する。例えば、あるリクエストに が含まれ、parameter1=A別のリクエストに が含まれている場合parameter1=a、リクエストに が含まれparameter1=A、リクエストに が含まれている場合、オリジンへの CloudFront 個別のリクエスト。 CloudFront オブジェクトが同一であってもparameter1=a、 はオリジンから返された対応するオブジェクトを個別にキャッシュします。A または のみを使用するとa、オリジンへのリクエストが少なく CloudFront なります。

  • パラメータの順序を統一する。大文字と小文字が区別されることと同じように、あるオブジェクトに対するリクエストに parameter1=a&parameter2=b というクエリ文字列が含まれており、同じオブジェクトに対する別のリクエストに parameter2=b&parameter1=a が含まれている場合、オブジェクトは同一であっても、CloudFront は両方のリクエストをオリジンに転送し、対応するオブジェクトを個別にキャッシュします。パラメータの順序を統一すると、 CloudFront がオリジンに転送するリクエストが少なくなります。

詳細については、「クエリ文字列パラメータに基づくコンテンツのキャッシュ」を参照してください。がオリジン CloudFront に転送するクエリ文字列を確認する場合は、 CloudFront ログファイルの cs-uri-query列の値を参照してください。詳細については、「標準ログ (アクセスログ) の設定および使用」を参照してください。

Cookie 値に基づくキャッシュ

Cookie 値に基づいてキャッシュ CloudFront するように を設定する場合、次の操作を行うとキャッシュを改善できます。

  • すべての Cookie を転送する代わりに、指定された Cookie のみを転送 CloudFront するよう を設定します。オリジンに転送 CloudFront するように設定した Cookie CloudFront については、Cookie の名前と値の組み合わせごとに が転送されます。その場合、オリジンが返すオブジェクトがすべて同一であっても、別々にキャッシュされます。

    例えば、ビューワーがリクエストごとに 2 つの Cookie を含み、各 Cookie に 3 つの可能な値があり、すべての Cookie 値の組み合わせが可能であるとします。 CloudFront では、オブジェクトごとにオリジンに対して最大 6 つの異なるリクエストを行うことができます。オリジンが Cookie の 1 つだけに基づいて異なるバージョンのオブジェクトを返す場合、 CloudFront は必要以上のリクエストをオリジンに転送し、オブジェクトの複数の同一バージョンを不必要にキャッシュします。

  • 静的コンテンツと動的コンテンツに対してそれぞれ異なるキャッシュ動作を作成し、動的コンテンツの場合にのみ Cookie をオリジンに転送するように CloudFront を設定する。

    例えば、ディストリビューションに対してキャッシュ動作が 1 つしかなく、.jsファイルなどの動的コンテンツと、ほとんど変更されない.cssファイルの両方にディストリビューションを使用しているとします。 CloudFront は、Cookie 値に基づいて個別のバージョンの.cssファイルをキャッシュするため、各 CloudFront エッジロケーションは新しい Cookie 値または Cookie 値の組み合わせごとにリクエストをオリジンに転送します。

    パスパターンが *.cssで、Cookie 値に基づいて CloudFront がキャッシュしないキャッシュ動作を作成する場合、 は、エッジロケーションが特定の.cssファイルに対して受信する最初のリクエストと.css、ファイルの有効期限が切れた後の最初のリクエストに対してのみ、.cssファイルのリクエストをオリジン CloudFront に転送します。

  • Cookie 値がユーザーごとに一意である (ユーザー ID など) 動的コンテンツと、より少ない数の一意の値に基づいて変化する動的コンテンツに対してそれぞれ異なるキャッシュ動作を作成する (可能な場合)。

詳細については、「Cookie に基づくコンテンツのキャッシュ」を参照してください。がオリジン CloudFront に転送する Cookie を確認する場合は、 CloudFront ログファイルの cs(Cookie)列の値を参照してください。詳細については、「標準ログ (アクセスログ) の設定および使用」を参照してください。

リクエストヘッダーに基づくキャッシュ

リクエストヘッダーに基づいてキャッシュ CloudFront するように を設定する場合、次の操作を行うとキャッシュを改善できます。

  • すべてのヘッダーに基づいて転送およびキャッシュするのではなく、指定されたヘッダーのみに基づいて転送およびキャッシュ CloudFront するように を設定します。指定したヘッダーについて、 CloudFront はヘッダー名と値のすべての組み合わせを転送します。その場合、オリジンが返すオブジェクトがすべて同一であっても、別々にキャッシュされます。

    注記

    CloudFront は、次のトピックで指定されたヘッダーを常にオリジンに転送します。

    リクエストヘッダーに基づいてキャッシュ CloudFront するように を設定する場合、 が CloudFront 転送するヘッダーは変更されず、 がヘッダー値に基づいてオブジェクトを CloudFront キャッシュする場合に限ります。

  • 多数の一意の値を持つリクエストヘッダーに基づいてキャッシュすることを可能な限り回避する。

    例えば、ユーザーのデバイスに基づいてさまざまなサイズのイメージを供給する場合は、大量の値を持つ User-Agentヘッダーに基づいてキャッシュ CloudFront するように を設定しないでください。代わりに、 CloudFront デバイスタイプのヘッダー 、CloudFront-Is-Desktop-Viewer、、CloudFront-Is-SmartTV-Viewerおよび に基づいてキャッシュ CloudFront するように CloudFront-Is-Mobile-Viewerを設定しますCloudFront-Is-Tablet-Viewer。さらに、タブレットとデスクトップに同じバージョンのイメージを返す場合は、CloudFront-Is-Tablet-Viewer ヘッダーではなく CloudFront-Is-Desktop-Viewer ヘッダーのみを転送します。

詳細については、「リクエストヘッダーに基づくコンテンツのキャッシュ」を参照してください。

圧縮が不要な場合に Accept-Encoding ヘッダーを削除する

オリジンが圧縮をサポートしていないため、サポート CloudFront していないか、コンテンツが圧縮可能でないため、ディストリビューション内のキャッシュ動作を Custom Origin Header を設定するオリジンに関連付けることで、キャッシュヒット率を高めることができます。

  • ヘッダー名: Accept-Encoding

  • ヘッダー値: (空白のままにする)

この設定を使用すると、 はキャッシュキーから Accept-Encodingヘッダー CloudFront を削除し、オリジンリクエストに ヘッダーを含めません。この設定は、そのオリジンからのディストリビューションと CloudFront 連携するすべてのコンテンツに適用されます。

HTTP を使用したメディアコンテンツの提供

ビデオオンデマンド (VOD) およびビデオコンテンツのストリーミングの最適化の詳細については、「によるビデオオンデマンドおよびライブストリーミングビデオ CloudFront」を参照してください。