How to serve gzipped assets from Amazon S3

For future reference to anyone else with this problem:

Gzip your components. Then remove the .gz extension leaving only the .css or .js extension. Upload the files to your bucket.

From your S3 dashboard, pull up the properties for the file that you just uploaded. Under the 'Metadata' header enter this information:

'content-type'      :  'text/css' or 'text/javascript'
'content-encoding'  :  'gzip'

These value options are not available by default (wtf) so you must manually type them.


I also found a solution how to do it using CLI, very useful when working with multiple files:

aws s3api put-object \ 
  --bucket YOUR_BUCKET \ 
  --key REMOTE_FILE.json \ 
  --content-encoding gzip \
  --content-type application/json \ 
  --body LOCAL_FILE.json.gz 

Notes:

  • Set content-type approppriately to what you're uploading
  • The file name on the server doesn't need to have the .gz extension

Tags:

Amazon S3

Gzip