LoginSignup
14
10

More than 5 years have passed since last update.

S3にアップロードされた画像にCache-Controlを付与する

Posted at

はじめに

某メディアをGoogleのPageSpeed Insightsで解析したところ、「最適化についての提案」という項目の中で「ブラウザのキャッシュを活用する」というのがありました。

静的リソースの HTTP ヘッダー内で、有効期日や最大経過時間を設定すると、ブラウザがネットワークからではなくローカル ディスクから以前にダウンロードしたリソースを読み込むようになります。

次のキャッシュ可能なリソースでブラウザのキャッシュを活用してください:

とのことなので今回はS3に置いたコンテンツ(今回は画像)にCache-Controlを付けました。

S3に保存されている画像にCache-Controlを付けるには幾つか方法がありますが僕の場合はS3に上げている画像の枚数をそれほど多くなかったので
愚直にAWSコンソールから設定しました。

フォルダを選択してメタデータを変更する

やり方は簡単で、S3のWeb UIから対象のオブジェクトを選び右クリックから Change metadata を選択する。
スクリーンショット 2018-08-21 10.00.15.png

Cache-Controlを追加する

キャッシュ期間は少なくとも 1 週間、静的アセットや更新頻度の低いアセットについては最大で 1 年間とすることをおすすめします。
https://developers.google.com/speed/docs/insights/LeverageBrowserCaching

Select a keyで Cache-Control を選択後、valueに適当な値を入れる。

キャッシュする時間が決まってない場合は上記の記述に従い、604800秒 = 7日を設定すれば良いかと思います。
スクリーンショット 2018-08-21 10.11.41.png

curlで確認

$ curl -I https://hoge.s3.amazonaws.com/uploads/article/ogp/2301/hoge.jpg
HTTP/1.1 200 OK
x-amz-id-2: wQvkuRebVq+nuTCkTMIygoWd8S5cccvvv2R7vv6vSGie0GMjwv+g10=
x-amz-request-id: 509711FF6290094F
Date: Tue, 21 Aug 2018 01:13:00 GMT
Last-Modified: Sat, 18 Aug 2018 07:23:22 GMT
ETag: "a9a811111111047b84d6af2a31cc"
Cache-Control: max-age=604800
Accept-Ranges: bytes
Content-Type: image/jpeg
Content-Length: 47370
Server: AmazonS3
14
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
10