Рекомендации по развертыванию Amazon S3 Cloudfront - PullRequest
26 голосов
/ 14 июля 2011

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

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

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

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

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

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

Ответы [ 2 ]

18 голосов
/ 14 июля 2011

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

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

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

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

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

8 голосов
/ 05 июня 2012

CloudFront начал поддерживать строки запросов, которые вы можете использовать для аннулирования кэша. http://aws.typepad.com/aws/2012/05/amazon-cloudfront-support-for-dynamic-content.html

...