2016-02-03 4 views
0

Если я планирую создать статический веб-сайт (используя WCMS, например, Jahia, Wordpress и т. Д.), Я могу попробовать и разместить весь сайт через Cloudfront, используя подход, подобный ниже?Хостинг всего сайта - Cloudfront?

  • Постройте сайт в ВЦМПЕ и экспортировать всю структуру сайта
  • Создание S3 статического сайт ведро
  • Используйте инструмент, как S3_Website (на Git) для экспортируемого файла сайта в S3
    • В любое более позднее время, когда вам необходимо синхронизировать обновления с экспортированным сайтом с веб-сайта S3, запустите s3_website push еще раз. (Он будет вычислять разницу, обновлять измененные файлы, загружать новые файлы и удалять устаревшие файлы.)
      • Используйте какой-то процесс опроса для запуска API экспорта и скрипта push S3_website, чтобы выполнить весь процесс. Может быть, функция лямбда. Запускать это говорят каждую ночь при условии, что таймер TTL составляет 24 часа?
  • Промойте содержимое в кэш CloudFront через предварительно теплый сценарий (например, как сценарий armfront на Git). Я немного неясен, как это работает с точки зрения этого, делает флеш и заменяет или делает недействительным, если это согласованное время мудрено (т. Е. Контент TTL истекает до того, как мы предварительно разогреваем и т. Д.?). Мне даже нужно предварительно разогревать?/Flush
  • Cloudfront настроен на использование ведра S3 в качестве исходного сервера и будет кэшироваться в соответствии с заголовками кеша. CF будет продолжать обслуживать контент, даже если истек.

Будет ли это работать или является более сложным с точки зрения кэшированного контента (аннулирование и т. Д.)?

ответ

3

Не думайте о CloudFront как о прежде всего «hosting» ваш сайт. CloudFront кэширует ваш сайт: a) уменьшает трафик на исходный веб-сервер (не стоит беспокоиться при размещении на S3 для начала) и b) ускорять доставку клиентам, поскольку кеши CloudFront географически распределены по всему миру, а не просто имея один централизованный сервер.

Да, вы можете разместить сайт таким образом. Поместите фактическую «главную копию» на S3, настройте CloudFront в качестве переднего кэша к ней. Мастер-копия должна оставаться там, где она есть; в случае, если вы подумывали удалить его с S3, как только он будет сохранен в CloudFront, это будет плохая идея. CloudFront не дает никаких гарантий относительно сохранения ваших данных; кеши могут истекать в любое время, все узлы CloudFront могут быть отправлены в автономном режиме, заменены или добавлены в любое время, и во всех этих случаях для узла CloudFront требуется исходный сервер для получения его копии.

Единственная проблема, которая осталась тогда: Срок действия кеша. Как всегда, существует два подхода:

  1. Настройте разумный тайм-аут кэша для вашего контента. Если срок истечения срока действия вашего контента истекает, скажем, 1 час, тогда любой клиент может увидеть данные, устаревшие на час после обновления вашего контента. Это может быть или не быть проблемой, вы решаете. Вы можете и должны настраивать разные сроки истечения срока действия для разных видов контента; изображения и т. д., возможно, будут кэшироваться неограниченно, в то время как HTML часто обновляемой главной страницы, вероятно, будет иметь гораздо более короткий срок службы.

  2. Явно очистить кеш с помощью запроса аннулирования после обновления вашего контента. Проблема в том, что у вас есть только ограниченное количество бесплатных запросов на недействительность на CloudFront. Это не то, что AWS вам нравится делать и в основном зарезервировано как инструмент для чрезвычайных ситуаций, когда некорректные данные вытесняются. AWS предпочитает, чтобы контент заканчивался естественным образом, так как это снижает нагрузку на сеть.

«Предварительное потепление» это обычно не нужно, и трудно сделать в любом случае, так как вы не можете толчок содержание CloudFront; CloudFront тянет содержимое от источника при необходимости. Я не уверен, что «armfront» вы имеете в виду точно или то, что он якобы делает. Без предварительного прогрева самый первый запрос на конкретную страницу в определенном географическом регионе будет настолько немного медленнее, вот и все.

+0

Спасибо за ответ. Поэтому лучше всего было бы позволить Cloudfront делать все возможное и иметь разумные настройки для таких вещей, как TTL и заголовки кеша? Не беспокойтесь, пытаясь согреть/сбросить кеш? – JoeShmoe

+2

Да, действительно. CloudFront кэширует в соответствии с тем, что вы определяете в заголовках HTTP **, которые также будет делать браузер клиента ** (не говоря уже о других возможных прокси). Поскольку вы не можете очистить кеш браузера клиента, в любом случае вам нужно принять решение о разумных TTL. – deceze

+0

Tks снова, мне интересно, если есть какая-либо ценность при копировании сайта в ведро S3, скорее позвольте CF фронту WCMS в качестве исходного сервера и у него есть за ELB, чтобы поддерживать SSL как на CF, так и на ELB и поддерживать автоматическое масштабирование/исцеление и т.д. – JoeShmoe

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