2016-11-30 6 views
0

Я использую django для разработки моего сайта, и я пытаюсь оптимизировать свой сайт для скорости, поэтому я хочу использовать CDN для моего загрузочного лотка, и если это не удастся, чем я хочу использовать копию с моего сервера, я видел
How to load local files if CDN is not working
, но он делает это в JavaScript, но это не решает мою проблему, я хочу знать
как проверить, если CDN работать с Django, и если не обслуживать статические файлы с сервера?Как загрузить локальные статические файлы, если сбой CDN? (django)

+1

Просто используйте надежный CDN. – ceejayoz

ответ

2

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

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

Возможно, вы могли пинговать серверы CDN, которые, вероятно, разрешали бы в ваше приложение Django получать один адрес балансировки нагрузки CDN и пытаться выяснить, работает ли это для вас или нет, а также вернуться к другим, если источник CDN не работает. Тогда вам, вероятно, придется увидеть, для каждого ресурса у вас есть, то есть каждый файл JavaScript и CSS, если они доступны, и загружать локальную резервную копию, если нет. На стороне сервера. Это очень медленно и подвержено ошибкам. Сети могут терпеть неудачу для googolplex по разным причинам.

Правильный способ идти об этом, чтобы

  • использовать только локальные сервера для обслуживания этих статических файлов, распределять нагрузку с серверами приложений, каждый из которых имеет свою собственную версированную копию статических файлов. Если ваш сервер приложений работает, он также должен иметь копии;
  • Выполняйте проверки на стороне клиента, поскольку запросы на стороне сервера замедляют работу вашего сервера до остановки, если он не близок к вашей сети CDN, и вы вообще не хотите зависеть от каких-либо внешних ресурсов на стороне сервера ;
  • Или, как я бы рекомендовал, настройте свой собственный CDN, который будет обслуживать ваши локальные файлы из прокси-адреса или поддомена. Подробнее см. Ниже.

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

для вашего сайта находится в WWW .example.com, который является вашим адресом сервера приложений Django. Вы бы установили домен cdn.example.com, который будет сервисом CDN, например CloudFront или аналогичным, который проксирует ваши запросы на www.example.com/static/ и отражает ваши статические файлы как CDN, снимая нагрузку с вашего сервер приложений. Вы можете просто определить приложение Django для использования адреса http://cdn.example.com/static для обслуживания статических файлов. Существует несколько разных сервисов для предоставления CDN для вашего приложения, CloudFront - это всего лишь один вариант. Это приведет к тому, что ваши статические файлы CDNable рядом с вашим пользователем.

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

1

Я не знаю, что там будет хороший способ сделать это, но это метод, который я хотел бы использовать, если бы люди, которые заплатили мне действительно хотел, чтобы сделать эту работу

Вы могли настраивать собственные теги URL-адресов в отдельном подключаемом приложении и проверять его на CDN-цель, а затем, если он не работает, обслуживать локальный URI. По общему признанию, проверка подлинности CDN не означает, что она фактически будет служить файлу, поэтому более надежным способом было бы попытаться ПОЛУЧИТЬ файл от поставщика CDN, и, если это удастся, отправьте удаленный URI, и если он не удастся, отправьте локальный URI. Это удвоит трафик ваших статических файлов для каждого запроса.

Это также требует установки статического файла, который будет работать так же, как если бы вы планировали обслуживать все с этого сервера. Я бы не рекомендовал ничего из этого. Я бы рекомендовал делать то, что говорит @ceejayoz, и просто использовать надежный CDN. Это их цель в жизни - это не делать этого.

0

Это достижимо, но установка может быть немного утомительной.

В основном вы пытаетесь выполнить переход на другой ресурс между CDN и сервером происхождения. Если CDN завершается с ошибкой, запрос прерывается на исходный сервер. Один из вариантов - использовать переключение уровня DNS с первичным CDN CNAME, резервное копирование на исходное имя хоста сервера.

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

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

  • Нет связанных вопросов^_^