概要

  • 今回は、経験をもとにした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
      オリジンサーバーがすべてのクエリ文字列パラメータについてオブジェクトの異なるバージョンを返す場合、このオプションを選択します。

  • [Yes, Edit]を押し、変更内容を確定します。
  • ディストリビューションのStatus が”Deployed” に変わるまで待ちます。

参考資料

  • その他のCloudFront設定は、下記の記事も参考にしてください。キャッシュ動作の設定詳細については、AWSドキュメントを合わせてご確認下さい。
概要はじめに今回は、CloudFront のディストリビューションに代替ドメイン名(CNAME)を設定する方法をまとめます。代替ドメイン名の設定によって、ディストリビューションにデフォルトで割り当てられたドメイン名ではなく独自のドメイン名 (例: www.example.com) が...
概要今回はCloudFrontを応用したリバースプロキシの構築方法を紹介します。CloudFrontに複数のオリジンを設定し、パスパターンに応じてリクエストをオリジンに転送する方法となります。リバースプロキシとは、クライアントとサーバーを仲介するプロキシサーバーであ...
CloudFront がクエリ文字列パラメータのオリジンへの転送、キャッシュ、ログ作成を行う方法について説明します。
CloudFront コンソール を使用して新しいディストリビューションの作成や、既存のディストリビューションの更新を行う場合、以下の値を指定します。

元記事はこちら

CloudFront でクエリ文字列パラメータを転送するには