2016-08-11 4 views
0

Я загрузил файл javascript в aws s3 bucket и для сжатия gzip, я установил следующие метаданные. Также я сделал файл общедоступным.gzip не работает для активов aws s3

Content-Encoding: gzip 

Там уже есть один мета данные

Content-Type: application/x-javascript 

Ошибка при доступе из браузера

This webpage is not available ERR_CONTENT_DECODING_FAILED 

Доступ к URL, как это

https://s3-url.amazonaws.com/bucket-name/assets/js/angular.js 
+0

Возможно, вы столкнулись с проблемой из-за проблемы с сервером aws. Я также сталкиваюсь с проблемой с aws. –

+0

Вы фактически сжимаете файл, используя 'gzip', прежде чем загружать его? –

+0

@ Майкл, Нет. Я не сжимаю перед загрузкой, мне нужно это сделать? –

ответ

2

Установка Content-Encoding: gzip фактически не изменяет кодировку содержимого вашего объекта. Это используется для описать кодировку, которую вы применили.

Установка его без фактического применения сжатия gzip к объекту приведет к ошибкам, подобным тому, с которым вы столкнулись. Это браузер, жалующийся, что вы «заявили» (через заголовок), что контент был фактически закодирован с помощью gzip, когда на самом деле это не так.

Аналогичным образом, загрузка объекта gzipped без установки заголовка приведет к непригодной загрузке, так как принимающий пользовательский агент (браузер) не имеет способа узнать, как декодировать контент или что он даже должен попробовать.

Обратите внимание, что когда вы загружаете файл на свой компьютер с помощью gzip -9 somefile.js, его имя изменяется, чтобы добавить .gz на конец, оставив его имя somefile.js.gz. Удалите .gz перед загрузкой. Это не нужно и, конечно же, вы не хотите менять свои ссылки.

выше указывает, что gzip должен использовать максимальное сжатие, что, вероятно, является тем, что вы хотите.

Смежные вопросы