CloudFrontのForward Cookiesについて実際どの様に動作するのか調べてみました。以下一定時間のキャッシュ設定をしてcURLを使用して検証しています。
Forward CookiesをAllに設定
最もキャッシュが効きにくい設定です。
Cookieにkey1=aaaを設定してキャッシュ作成後、下記のCookieを設定してアクセスすると以下のようになります。
| 設定したCookie | キャッシュ | オリジンに渡されたCookie |
|---|---|---|
| key1=aaa | Hit | - |
| key1=bbb | Miss | key1=bbb |
| key2=aaa | Miss | key2=aaa |
| key2=bbb | Miss | key2=bbb |
Forward CookiesをWhitelistに設定
Whitelistに指定したCookieのみキャッシュ対象から除外する設定です。
Whitelistにkey1を設定
Cookieにkey1=aaaを設定してキャッシュ作成後、下記のCookieを設定してアクセスすると以下のようになります。
| 設定したCookie | キャッシュ | オリジンに渡されたCookie |
|---|---|---|
| key1=aaa | Hit | - |
| key1=bbb | Miss | key1=bbb |
| key2=aaa | Miss | Cookieなし |
| key2=bbb | Miss | Cookieなし |
| key1=aaa; key2=aaa | Hit | - |
| key1=bbb; key2=aaa | Miss | key1=bbb |
| key2=aaa; key1=aaa | Hit | - |
key2については設定されていないのと同じような動作になります。また、クエリストリングのキャッシュ設定の場合は順番も影響したのですがCookieの場合は影響しないようです。
Whitelistにkey1/key2を設定
Cookieにkey1=aaaを設定してキャッシュ作成後、下記のCookieを設定してアクセスすると以下のようになります。
| 設定したCookie | キャッシュ | オリジンに渡されたCookie |
|---|---|---|
| key1=aaa | Hit | - |
| key1=bbb | Miss | key1=bbb |
| key2=aaa | Miss | key2=aaa |
| key2=bbb | Miss | key2=bbb |
| key1=aaa; key2=aaa | Miss | key1=aaa; key2=aaa |
| key1=bbb; key2=aaa | Miss | key1=bbb; key2=aaa |
| key2=aaa; key1=aaa | Miss | key1=aaa; key2=aaa |
アプリケーションなどでは影響でることはないと思いますが、keyの順番を逆順にした最後のリクエストでオリジンに渡ってきたリクエストのCookieの順番が変わっていました。
また、Cookieにkey1=aaa; key2=bbbを設定してキャッシュ作成後Cookieの値を逆にしてどうなるかも検証してみました。
| 設定したCookie | キャッシュ | オリジンに渡されたCookie |
|---|---|---|
| key2=aaa; key1=aaa | Hit | - |
Forward CookiesをNone (Improves Caching)に設定
Cookieにkey1=aaaを設定してキャッシュ作成後、下記のCookieを設定してアクセスして確認しました。
Cookieの値が削除されたリクエストがオリジンにいきます。最もキャッシュが利用されやすいです。
| 設定したCookie | キャッシュ | オリジンに渡されたCookie |
|---|---|---|
| key1=aaa | Hit | - |
| key1=bbb | Hit | - |
| key2=aaa | Hit | - |
| key2=bbb | Hit | - |