How can I modify HTTP Headers for Objects in my Bucket?
Is there a way to change HTTP Response headers for images being served from object storage to specify how long the image should be cached by the browser?
4 Replies
You can do so using s3cmd to modify the metadata of either the entire bucket, or on a per object basis.
To make the change for all of the objects inside of the bucket you can do so by running the following command:
s3cmd --recursive modify --add-header=”Cache-Control: max-age=$TOTAL_SECONDS” s3://$BUCKET_NAME
To make the change on one file you can do so with the following command:
s3cmd modify --add-header=”Cache-Control: max-age=$TOTAL_SECONDS” s3://$BUCKET_NAME/$FILE_NAME
You can even use globbing to target files that have a particular extension to add the header:
s3cmd modify --add-header=”Cache-Control: max-age=$TOTAL_SECONDS” ‘s3://$BUCKET_NAME/*.png’
(Please note the single quotes surrounding the location of the bucket.)
$TOTAL_SECONDS, $BUCKET_NAME and $FILE_NAME are the number of seconds the browser should cache the file, the name of the bucket, and the name of the file respectively.
Hi, how can I ensure all the future files added to the storage has the expiration set to the headers? I am using s3 boto api to upload files to storage, do I need to set the expiration headers via my upload function?
I followed the instructions of @Kmt5422 but when I make a new request to the file, there's still no header "cache-control"…
Is there another way to know if it's working?
Linode doesn't implement this. I reached out to support and they confirmed this, also saying they "do not have a timeline nor guarantee this will be implemented"