AWS-Logo-black

[AWS]如何在 AWS s3 設定 Cache Control,指定儲存物件的過期時間

s3 可以針對每個儲存物件設定 cache control,但是我覺得很麻煩,就找了一下有沒有可以透過設定 bucket 的 cache control 來一次指定所有 bucket 之下的儲存物件。but…居然「沒有!」。所以如果要設定 s3 的 cache control 請乖乖地針對每個儲存物件,一個一個設定吧!

 

為什麼要設定 cache control 可以先參考這篇的開頭說明,
[nginx]在 nginx 設定 Cache Control 指定圖片、javascript、與CSS的過期時間

本篇將說明在 AWS s3 設定 Cache Control 的兩種方式,

1.透過 AWS Cli

通常用在已經上傳了大量資料到 AWS,不可能一個一個在 s3 的後台改,又不想另外寫程式把所有的 object 全部再跑一遍。可以用這種方式,一行指令搞定一個 bucket。只是如果有多個 bucket 要修改,就要一個一個跑指令囉。

aws s3 cp s3://bucket/ s3://bucket/ --recursive --metadata-directive REPLACE --acl public-read --cache-control max-age=31536000, public --content-type image/jpeg

2.透過 AWS SDK for PHP 設定

詳細的程式碼請參考這篇
[PHP]AWS PHP SDK 讓你使用 PHP 內建的 function 存取 s3 檔案
只是多加了 CacheControl 這個參數

$s3->putObject([
            'Bucket' => 'your_bucket',
            'Key'    => 'filename',
            'SourceFile' => 'path/to/your_file',
            'ACL'    => 'public-read',
            'ContentType'  => 'image/jpeg',
            'CacheControl' => 'max-age=31536000,public'
        ]);  

 

Designed by Freepik

標籤: , , , , ,

很愛畫虎爛的我,開始了用文章唬爛社會大眾的志業!