概要
AWS CloudFrontでレスポンスヘッダーにCache-Controlを返す方法を記載します。
経緯
画像をS3に置いて、CloudFrontを通してサイトに配信しています。
その際対象のサイトを PageSpeed Insights
で計測をすると、CloudFront経由で配信しているS3の画像が「キャッシュの設定をしてくだいさい」的な感じで警告になる場合がありました。
原因はCloudFrontのキャッシュにはヒットしているのですが、レスポンスにCache-Controlが無いため、PageSpeed Insightsではブラウザキャッシュの設定をしてくださいと出ているようだと思いました。
本方法と別方法で、S3の画像にカスタムヘッダーでCache-Controleをつければ解決する方法もあるようですが、画像アップロードのたびにカスタムヘッダー情報を付けたりする方法が少し面倒でCloudFrontの設定で付けれないか試してみたのがきっかけになります。
設定
CloudFrontのレスポンスヘッダーを新規作成
ビヘイビアの設定に追加する
確認
- PageSpeed Insightsで確認する
- ブラウザで開発ツールなどでResponse Headersを確認する
(下記画像はChrome > デベロッパーツール > ネットワークタブ > 任意の画像を選択)
以上になります。