CloudFront с веб-сайтом S3 как источник не обслуживает файлы gzipped
AWS теперь поддерживает файлы gzipping через CloudFront
Я выполнил все инструкции в Службе сжатых файлов, но gzipping не работает.
У меня есть ведро S3, настроенное как веб-сайт, который CloudFront использует в качестве источника.
-
Compress Objects Automatically
включен
- Я обслуживаю файлы с правильными типами контента, такими как
application/javascript
и text/css
- Файлы находятся в пределах 1000 и 10 000 000 байтов.
- Веб-сайт S3 обслуживает файлы с
Content-Length
, насколько мне известно.
- Чтобы быть уверенным, что ничего не было кэшировано, я оба признал недействительным весь ведро S3 и загрузил более новые версии файлов на S3.
- Кроме того, браузер, который я использую, Chrome, принимает файлы gzipped.
Несмотря на все это, я не могу заставить gzipping работать. Я получил все остальное, включая SSL, и вы можете посетить сайт здесь: https://formulagrid.com/
Если вы откроете консоль хром, вы заметите, что ни один из файлов, которые обслуживаются с S3, не загружается. Единственными gzipped файлами, такими как шрифт google, являются те, которые я захватываю из других CDN.
Ответы
Ответ 1
Сегодня я совершил ту же ошибку и решил ее, добавив правило CORS в ведро S3. Это правило гарантирует, что заголовок Content-Length отправляется в Cloudfront, поэтому содержимое может быть сжато:
S3 > Ковш > Разрешения > Конфигурация CORS
<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
<AllowedOrigin>*</AllowedOrigin>
<AllowedMethod>GET</AllowedMethod>
<MaxAgeSeconds>3000</MaxAgeSeconds>
<AllowedHeader>Authorization</AllowedHeader>
<AllowedHeader>Content-Length</AllowedHeader>
</CORSRule>
</CORSConfiguration>
Кредит принадлежит Роберту Эллисону: http://ithoughthecamewithyou.com/post/enable-gzip-compression-for-amazon-s3-hosted-website-in-cloudfront
Насколько я знаю, это, как представляется, недокументированное требование.