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

Насколько я знаю, это, как представляется, недокументированное требование.