web-dev-qa-db-ja.com

CloudFront-すべてのクエリ文字列を転送し、どれにも基づいてキャッシュしない-可能ですか?

バックグラウンド

CloudFrontを上にして、Websocket接続を提供するEC2インスタンスがあります。現在、CloudFront内でキャッシュできない動的コンテンツを提供しているので、「選択したリクエストヘッダーに基づくキャッシュ」オプションを「すべて」に設定することで、オブジェクトのキャッシュを効果的に無効にしました。

クエリ文字列も処理する必要があるので、「クエリ文字列の転送とキャッシュ」オプションを変更する必要がありました。

質問

私の質問は基本的にタイトルです:
CloudFrontにすべてのクエリ文字列を転送させることはできますが、キャッシュ文字列に基づいてキャッシュしないことはできますか?
3つの異なるオプションがあるようですが、どれもそれを実行しませんが、何か不足している可能性があります。
今のところ、オプションを「すべて転送、すべてに基づくキャッシュ」に設定しています。

免責事項

現時点で起こっていることがアプリケーションに何らかの影響を与えるかどうかは実際にはわかりません(影響はないようです)。うまくいけば、いくつかの回答を読んだ後、そのオプションが選択された結果として何がキャッシュされているかを理解できます。

1
Dimos

Forward all、cache based on all、の意味を誤って解釈していると思います。オプションが実際に何をしているのかを単純化しすぎたり、誤って伝えたりすることもあります。

これを選択しても、キャッシングは有効にならず、moreキャッシングも発生しません。実際、それはlessキャッシングを引き起こします。このオプションは、すべてまたはすべてのクエリ文字列パラメーターをキャッシュキーに追加します。つまり、パスがまったく同じで、ホワイトリストに登録されたヘッダーがまったく同じで、クエリ文字列パラメーターのキーや値が異なる2つのリクエストは、関連のないリクエストと見なされます。 2つの異なるオブジェクトの場合、最初の要求で応答がキャッシュされる場合でも、2番目の要求はそのキャッシュされた応答を使用しません。

より適切なフェーズはすべて転送し、すべてが同一の場合にのみキャッシュからオブジェクトにサービスを提供する可能性がありますですが、Rhatはまだ何か望ましいものを残していると思いますが、おそらく多少は明確になります。

すべてのヘッダーが転送用にホワイトリストに登録されている場合、この設定に関係なく、何もキャッシュされません。 Cache-Controlヘッダーは、オブジェクトをキャッシュしないようCloudFrontに指示します。何もキャッシュされないため、「すべてに基づくキャッシュ」は影響を与えず、CloudFrontは意図したとおりにここで実行します。

2