Зачем обслуживать статический файл в производстве, используя django, это не рекомендуется? - PullRequest
0 голосов
/ 12 января 2019

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

Мое приложение использует whitenoise для статических файлов сервера: все работает нормально, и у меня нет проблем с производительностью ... но, на самом деле, я не могу понять, ПОЧЕМУ практика обслуживать эти статические файлы, используя непосредственно интерпретатор WSGI обескуражен ( LINK ), говорит:

Это не подходит для производственного использования! Для некоторых распространенных стратегий развертывания ...

Я имею в виду, мой сервис - это набор микросервисов: DB-Frontend-Services-Etc ... Если мне нужно масштабировать их, я могу сделать это без каких-либо проблем и, кроме того, используя эту философию, я не беспокоиться о следе моих микросервисов: для меня это кажется логичным, но, может быть, для всего остального мира это совершенно безумная стратегия.

Ответы [ 3 ]

0 голосов
/ 12 января 2019

Три причины, по которым я лично работаю со статичностью из CDN,

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

2- Некоторые хостинговые сервисы, такие как AWS, взимают плату за дополнительный входящий / исходящий трафик, в то время как вы можете использовать более дешевые сервисы, такие как Cloudfront и S3 bucket.

3- Мне нравится хранить свои серверы приложений только для целей приложений и использовать каждый сервис только для своей работы, это помогает мне в отладке и сокращении количества отказов.

С другой стороны, обслуживать статические данные с сервера приложений с помощью чего-то вроде WhiteNoise намного проще, чем настраивать CDN.

Надеюсь, это поможет!

0 голосов
/ 12 января 2019

Это нормально, когда вы используете Whitenoise, потому что:

  1. Whitenoise специально создан для этой цели и поэтому эффективен
  2. Он правильно установит заголовки ответа HTTP, чтобы клиенты кэшировали файлы.

Но подумайте об этом так: вместо того, чтобы обслуживать 1 или 2 запроса на веб-страницу, вы часто получаете в 10 раз больше запросов (обычно веб-страницы запрашивают кучу изображений, один или несколько файлов CSS, пару js файлы ...). Это означает, что вы должны масштабировать сервер приложений, чтобы обслуживать в 10 раз больше трафика, чем если бы вы оставили работу на CDN.

Кстати, я написал учебник на эту тему, который может помочь.

0 голосов
/ 12 января 2019

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

...