Cookie に基づくコンテンツのキャッシュ - Amazon CloudFront

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

Cookie に基づくコンテンツのキャッシュ

デフォルトでは、 CloudFront はリクエストとレスポンスを処理するとき、またはエッジロケーションでオブジェクトをキャッシュするときに Cookie を考慮しません。がヘッダーの内容を除いて同一の 2 つのリクエスト CloudFront を受信するとCookie、デフォルトでは はリクエストを同一として CloudFront 処理し、両方のリクエストに対して同じオブジェクトを返します。

ビューワーリクエストの一部またはすべての Cookie をオリジン CloudFront に転送し、転送する Cookie 値に基づいてオブジェクトの個別のバージョンをキャッシュするように を設定できます。これを行うと、 は、転送するように設定されているものにかかわらず、ビューワーリクエストの一部またはすべての Cookie CloudFront を使用して、キャッシュ内のオブジェクトを一意に識別します。

たとえば、locations.html に対するリクエストに country Cookie が含まれており、その値が uk または fr であるとします。Cookie の値に基づいてオブジェクトをキャッシュ CloudFront するように country を設定すると、 CloudFront は をオリジンlocations.htmlにリクエストし、Cookie country とその値を含めます。オリジンは を返しlocations.html、Cookie の値が であるリクエストでは 1 countryuk、値が であるリクエストでは 1 回、オブジェクトを CloudFront キャッシュしますfr

重要

Amazon S3 および一部の HTTP サーバーは Cookie を処理しません。Cookie を処理しない、または Cookie に基づいて応答を変更しないオリジンに Cookie を転送する CloudFront ように を設定しないでください。これにより、 CloudFront が同じオブジェクトのオリジンにより多くのリクエストを転送する可能性があり、パフォーマンスが低下し、オリジンの負荷が増大します。前の例を考慮すると、オリジンが Cookie country を処理しないか、Cookie の値 CloudFront に関係なく常に同じバージョンの country locations.htmlを に返す場合は、その Cookie を転送する CloudFront ように を設定しないでください。

逆に、カスタムオリジンが特定の Cookie に依存している場合や、Cookie に基づいて異なるレスポンスを送信する場合は、その Cookie をオリジンに転送 CloudFront するように を設定してください。それ以外の場合は、リクエストをオリジンに転送する前に Cookie CloudFront を削除します。

Cookie 転送を設定するには、ディストリビューションのキャッシュ動作を更新します。キャッシュ動作の詳細については、「キャッシュ動作の設定」の、特に「cookie の転送」および「許可リストCookie」セクションを参照してください。

各キャッシュ動作を設定して、次のいずれかを実行できます。

  • すべての Cookie をオリジンに転送する – CloudFront リクエストをオリジンに転送するときにビューワーによって送信されるすべての Cookie が含まれます。オリジンがレスポンスを返すと、 はビューワーリクエストの Cookie 名と値を使用してレスポンスを CloudFront キャッシュします。オリジンレスポンスにSet-Cookieヘッダーが含まれている場合、 はリクエストされたオブジェクトをビューワーに CloudFront 返します。 はオリジンから返されたオブジェクトを含むSet-Cookieヘッダー CloudFront もキャッシュし、すべてのキャッシュヒットでそれらのSet-Cookieヘッダーをビューワーに送信します。

  • 指定した一連の Cookie を転送する – CloudFront は、リクエストをオリジンに転送する前に、ビューワーが許可リストにない Cookie をすべて削除します。 は、ビューワーリクエストにリストされている Cookie の名前と値を使用してレスポンスを CloudFront キャッシュします。オリジンレスポンスにSet-Cookieヘッダーが含まれている場合、 はリクエストされたオブジェクトをビューワーに CloudFront 返します。 はオリジンから返されたオブジェクトを含むSet-Cookieヘッダー CloudFront もキャッシュし、すべてのキャッシュヒットでそれらのSet-Cookieヘッダーをビューワーに送信します。

    Cookie 名でワイルドカードを指定する方法の詳細については、「許可リストCookie」を参照してください。

    キャッシュ動作ごとに転送できる Cookie 名の数に関する現在のクォータについて、またはクォータの引き上げをリクエストするには、「クエリ文字列のクォータ (従来のキャッシュ設定)」を参照してください。

  • Cookie をオリジンに転送しない - CloudFront ビューワーによって送信された Cookie に基づいてオブジェクトをキャッシュしません。さらに、 CloudFront はリクエストをオリジンに転送する前に Cookie を削除し、レスポンスをビューワーに返す前にレスポンスから Set-Cookie ヘッダーを削除します。

転送する Cookie を指定するときには、以下に注意してください。

アクセスログ

がリクエストをログに記録し CloudFront 、Cookie をログに記録するように を設定する場合、Cookie をオリジンに転送 CloudFront しないように設定した場合や、特定の Cookie のみを転送する CloudFront ように を設定した場合も、 はすべての Cookie とすべての Cookie 属性を CloudFront ログに記録します。 CloudFront ログ記録の詳細については、「」を参照してください標準ログ (アクセスログ) の設定および使用

大文字と小文字の区別

Cookie の名前と値は、大文字と小文字を区別します。例えば、 CloudFront がすべての Cookie を転送するように設定されていて、同じオブジェクトに対する 2 つのビューワーリクエストに、大文字と小文字を除いて同一の Cookie がある場合、 はオブジェクトを 2 回 CloudFront キャッシュします。

CloudFront Cookie をソートする

CloudFront が Cookie (すべてまたはサブセット) を転送するように設定されている場合、 はリクエストをオリジンに転送する前に、Cookie 名で自然な順序で Cookie を CloudFront ソートします。

If-Modified-Since および If-None-Match

If-Modified-Since Cookie (すべてまたはサブセット) を転送するように が設定されている場合 CloudFront 、 および If-None-Match条件付きリクエストはサポートされません。

標準の名前と値のペア形式が必要

CloudFront は、値が標準の名前と値のペア形式 に準拠している場合にのみ Cookie ヘッダーを転送します。次に例を示します。 "Cookie: cookie1=value1; cookie2=value2"

Set-Cookie ヘッダーのキャッシュの無効化

CloudFront が Cookie をオリジンに転送するように設定されている場合 (すべてまたは特定の Cookie)、オリジンレスポンスで受信したSet-Cookieヘッダーもキャッシュします。 は、これらのSet-Cookieヘッダーを元のビューワーへのレスポンスに CloudFront 含め、 CloudFront キャッシュから提供される後続のレスポンスにも含めます。

オリジンで Cookie を受け取りたいが、オリジンのレスポンスでSet-Cookieヘッダーを CloudFront キャッシュしたくない場合は、フィールド名Set-Cookieとして を指定する no-cache ディレクティブでCache-Controlヘッダーを追加するようにオリジンを設定します。例: Cache-Control: no-cache="Set-Cookie"。詳細については、「Hypertext Transfer Protocol (HTTP/1.1): Caching」標準の「Response Cache-Control Directives」を参照してください。

Cookie 名の全体の長さ

特定の Cookie CloudFront をオリジンに転送するように を設定した場合、転送 CloudFront するように設定するすべての Cookie 名の合計バイト数は、512 から転送する Cookie の数を引いた値を超えることはできません。例えば、10 個の Cookie CloudFront をオリジンに転送するように を設定した場合、10 個の Cookie の名前の合計長は 502 バイト (512~10) を超えることはできません。

すべての Cookie CloudFront をオリジンに転送するように を設定した場合、Cookie 名の長さは関係ありません。

CloudFront コンソールを使用してディストリビューションを更新し、 が Cookie をオリジン CloudFront に転送する方法については、「」を参照してくださいディストリビューションの更新。 CloudFront API を使用してディストリビューションを更新する方法については、「Amazon CloudFront API リファレンス」のUpdateDistribution「」を参照してください。