2016-12-23 7 views
1

Я изучаю рубин на рельсах. Я разрабатываю заявку на рельсы 5. Я не хочу использовать службу amazon s3 для хранения файлов моих активов. Я хочу использовать github для работы с моими файлами активов, как CDN.Как использовать github repo как сервер CDN для загрузки файла с файлами?

Но я столкнулся с проблемой, у меня есть динамическая система загрузки файлов и изображений. Итак, когда я загружу свои файлы и изображения, все файлы и изображения будут загружены в репозиторий github (предположим, у меня есть git repo с именем busket, поэтому все изображения и файлы будут загружены в busket repo с моего сервера и будет обслуживать все активы из приложения rails).

Итак, как я могу сделать github как CDN? Пожалуйста, помогите мне в этом вопросе.

+0

Почему вы не хотите использовать S3? Это слишком медленно (просто спрашивайте, потому что вы упомянули, что хотите обслуживать файлы, такие как CDN)? Поскольку GitHub будет еще медленнее, чем S3, это может быть плохой выбор. – spickermann

ответ

0

1.) Кодировать изображение базировать 64 исх: http://ruby-doc.org/stdlib-2.2.0/libdoc/base64/rdoc/Base64.html

2.) Сделайте API вызов GitHub

исх: https://developer.github.com/v3/repos/contents/#create-a-file

Это будет загружать и возвращать URL вашего сохраненного изображения в github, сохраните это в своей базе данных.

Хотя вы заявили, что не хотите использовать S3, драгоценный камень скрепки делает его очень обтекаемым.

+0

благодарит @Kyle Grey за ваше предложение. –

2

Я чувствую, что было бы плохой идеей загружать изображения и общие типы файлов контента в GitHub для хранения длинных сроков. GitHub был разработан как поставщик репозитория для Git, а не как хранилище данных NoSQL или другого типа. Обновление файлов в GitHub потребует совершения фиксации для конкретной ветки. Следовательно, каждый раз, когда вы меняете файл изображения, для этого требуется новый коммит. Это не будет масштабироваться, потому что Git не обрабатывает двоичные файлы.

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

+0

Я беспокоюсь о Тиме, это, безусловно, лучше отправить такие файлы из надлежащего CDN или хранилища объектов, такие как S3/GCS. [GitHub теперь поддерживает Git LFS] (https://git-lfs.github.com/), поэтому можно более эффективно хранить большие двоичные файлы (например, изображения) - это не самая лучшая идея. –

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

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