CloudFront でクエリ文字列パラメータを転送するには
概要
- 今回は、経験をもとにしたCloudFront のノウハウをご紹介します。CloudFront はデフォルトのキャッシュ動作の設定では、オリジン側にクエリ文字列パラメータを転送しません。
- CloudFrontは、キャッシュ最適化のため、デフォルトではクエリ文字列パラメータの転送とキャッシュを行いません。これにより、CloudFront がキャッシュからリクエストを処理できる可能性が高くなり、パフォーマンスが向上し、オリジンの負荷は低下します。
- 一般的にウェブアプリケーションは、クエリ文字列(?に続く文字列)を使用してオリジンにリクエストを送信します。CloudFront のデフォルトの動作は、下記5つのリクエストを全て共通として処理します。
- http://d111111abcdef8.cloudfront.net/main.html?language=de
- http://d111111abcdef8.cloudfront.net/main.html?language=en
- http://d111111abcdef8.cloudfront.net/main.html?language=es
- http://d111111abcdef8.cloudfront.net/main.html?language=fr
- http://d111111abcdef8.cloudfront.net/main.html?language=jp
- CloudFrontのクエリ文字列の転送とキャッシュの設定を変更することで、上記5つのリクエストを個別にキャッシュし、オリジンへの転送を行います。オリジン側に全てのクエリ文字列パラメータを転送する必要があるサービスでは、次に記載する設定を変更します。
CloudFront でクエリパラメータを転送するには
- CloudFront のディストリビューション選択し、[Behaviors]タブを開きます。
- 対象のcache behaviorを選択し、[Edit]を押します。
- Query String Forwarding and Caching(クエリ文字列の転送とキャッシュ)の設定を “Forward all, cache based on all" に変更します。
- 以下、各パラメータの説明です。
- None (Improves Caching)
オリジンがクエリ文字列パラメータの値に関係なくオブジェクトの同じバージョンを返す場合、このオプションを選択します。これにより、CloudFront がキャッシュからリクエストを処理できる可能性が高くなり、パフォーマンスが向上し、オリジンの負荷が低下します。 - Forward all, cache based on whitelist
オリジンサーバーが 1 つ以上のクエリ文字列パラメータに基づいてオブジェクトの異なるバージョンを返す場合、このオプションを選択します。次に、キャッシュ条件として CloudFront が使用するパラメータを [クエリ文字列のホワイトリスト] フィールドで指定します。 - Forward all, cache based on all
オリジンサーバーがすべてのクエリ文字列パラメータについてオブジェクトの異なるバージョンを返す場合、このオプションを選択します。
- None (Improves Caching)
- [Yes, Edit]を押し、変更内容を確定します。
- ディストリビューションのStatus が"Deployed" に変わるまで待ちます。
参考資料
- その他のCloudFront設定は、下記の記事も参考にしてください。キャッシュ動作の設定詳細については、AWSドキュメントを合わせてご確認下さい。