Подтвердить что ты не робот

Лучшая практика внедрения Amazon S3 Cloudfront

Наш текущий план сайта - использовать Amazon Cloudfront как CDN для файлов активов, таких как CSS, JavaScript и изображения, а также любые другие статические файлы.

В настоящее время мы имеем 1 ведро в S3, которое содержит все эти статические файлы. Файлы разделяются на разные папки в зависимости от того, что они собой представляют, "Scripts" - это файлы JS, "Изображения" - это изображения и т.д. Yadda yadda yadda.

Итак, с самого начала я не понял, что после развертывания Bucket от S3 до Cloudfront Distribution, каждое последующее обновление в bucket не будет снова развертываться в том же дистрибутиве. Таким образом, похоже, что вы должны повторно развертывать ведро в другой экземпляр Cloudfront каждый раз, когда у вас есть статическое обновление файла.

Это хорошо для изображений, потому что мы можем легко убедиться, что если есть изменение изображения, мы просто создадим новое изображение. Но это трудно сделать для CSS и JS.

Итак, это приводит меня к вопросам лучшей практики:

  • Лучше ли вам создавать другое облачное распределение для каждого развертывания? Проблема здесь в том, что вызывает проблемы с записями CNAME.
  • Является ли лучшей практикой НЕ хранить CSS и JS в Cloudfront из-за природы этих файлов, и их нужно легко модифицировать? Похоже, ответ на это был бы НЕТ, потому что цель CDN.
  • Есть ли какой-нибудь другой метод с Cloudfront, о котором я не знаю?
4b9b3361

Ответ 1

Вы можете выдавать запросы на недействительность CloudFront.

http://docs.amazonwebservices.com/AmazonCloudFront/latest/DeveloperGuide/Invalidation.html

Вместо ведро S3 мы используем наш собственный сервер как обычное происхождение. У нас есть .htaccess alias style_*.css до style.css, и мы добавляем время модификации файла для style.css в HTML. Поскольку CloudFront видит совершенно другой URL-адрес, он будет извлекать новую версию.

(Примечание. Некоторые CDN позволяют делать это через строку запроса, но CloudFront игнорирует все данные строки запроса для кэширования, следовательно, решение .htaccess.)

edit: CloudFront может быть (необязательно) настроен на использование строк запроса.