2016-10-16 17 views
1

Я изучаю возможность создания CDN для использования с моими сайтами Wagtail. Я думаю, что это будет более эффективный способ управления загрузкой мультимедиа во время этапа/производства, поскольку сейчас папка с носителями должна быть скопирована вручную с сервера на сервер при развертывании. Если бы все изображения были доступны из CDN, это не было бы проблемой.Настройка CDN с Wagtail CMS

Это будет мой первый раз, когда я использую CDN, поэтому я ищу совет. Существует много информации об использовании CDN с WordPress, но не так много документации по настройке с помощью Wagtail/Django. У меня есть следующие вопросы:

  1. Есть ли у кого-нибудь предложения по наилучшему способу реализации CDN с Wagtail?
  2. Как он обрабатывает заказы, которые пользователь отправляет через CMS? Большинство изображений будут загружены как часть статических файлов, но как это работает, когда пользователь загружает фотографию как часть сообщения?
  3. С какими CDN-компаниями у вас были лучшие/худшие впечатления? Сайты, которые я планирую использовать для этого, являются профессиональными/деловыми, но не электронной коммерцией.

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

Заранее благодарю вас за помощь.

ответ

2

следующие ресурсы могут быть полезны для требуемой настройки в трясогузке (позже сегодня я могу предоставить вам некоторые детали):

фронтэнд устройства аннулирования для страниц (так что не только для статических и мультимедийных файлов)

Ссылка: http://docs.wagtail.io/en/latest/reference/contrib/frontendcache.html#frontendcache-aws-cloudfront

Сохранение медиа-файлов в Amazon Web Services S3 ведрами

Это должно быть лучшим решением вместо копирования медиафайлов с сервера на сервер. В этом случае Amazon Web Services CloudFront (CDN) будет идеальным выбором.

Ссылка: https://django-storages.readthedocs.io/en/latest/backends/amazon-S3.html#amazon-s3

Подробнее CloudFront: https://aws.amazon.com/cloudfront/

Статический кэш файл недействительности с Джанго WhitENoise

Может быть уместным, чтобы очистить кэш для нового развертывания (статические файлы будут иметь уникальное имя файла, поэтому CDN будет иметь новый кеш-файл из его источника после развертывания)

Ссылка: http://whitenoise.evans.io/en/stable/django.html

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

Наконец, CDN для обслуживания статических и мультимедийных файлов не имеет ничего общего с Wagtail. Есть некоторые (см. Список выше) приятных приложений, доступных для самого Django, но вы можете выбрать другое решение для CDN (например, Cloudflare).

Так что создайте ковш AWS S3 для каждой среды (tst/acc/stg/prd) и используйте его для загрузки медиафайлов (так что файлы больше не на сервере) и настройте дистрибутив CloudFront для этих ведра были бы правильным решением для вашей проблемы.

С наилучшими пожеланиями, Роб Мурман

+0

Можете ли вы подтвердить, что это решение будет копировать загруженные пользователями файлы мультимедиа (изображения, документы) в CDN и служат эти файлы правильно, а? Похоже, что Whitenoise не подходит для обслуживания загруженных пользователем файлов мультимедиа. – Kim

+0

Загрузка файлов пользователей (мультимедийное приложение Django) не обрабатывается с помощью Whitenoise. Вы должны указать свой CDN на свой (предпочтительный) S3 Bucket для медиафайлов. В вашем приложении Django вам необходимо настроить, чтобы мультимедийные файлы загружались в тот же S3 Bucket, поэтому вместо локального диска вашего сервера. Вы можете использовать дисковое хранилище того же сервера, если хотите, но я предлагаю использовать ведро S3. Итак, когда вы загружаете новые файлы в Wagtail, у них будет новое уникальное имя в S3 Bucket. Если конечный пользователь запрашивает этот файл мультимедиа через CDN, используется источник S3 Bucket. –

+0

CloudFront сам использует также S3 для кэширования ее запроса. Поэтому, если вы хотите использовать свой диск для хранения медиафайлов Django, а НЕ отдельный S3 Bucket, CDN будет кэшировать его в любом случае. Поэтому, если ваши сайты Django снизятся, CDN по-прежнему будет обслуживать ваши медиафайлы. –