2015-07-10 6 views
0

Я создаю сайт на express.js, и мне интересно, где хранить изображения. Определенная «статическая» информация о сайте, такая как страницы команды, будет поддерживаться базой данных. Если на борт приходят новые члены команды, мы вводим новые данные в CouchDB, и на сайте появляется новая страница команды.Как получить изображения клиенту?

На странице группы будет отображаться изображение профиля, которое будет храниться в CouchDB вместе с другими данными.

Должен ли я отправлять изображение через веб-сервер или просто отправлять ссылку на то, где находится изображение, и иметь клиентский захват изображения из базы данных, поскольку CouchDB - это сам HTTP-сервер?

ответ

1

Я не эксперт от Couch DB, но вот мои 2 цента. В общем, попадание БД для каждого изображения, будет увеличивать нагрузку. Если сайт будет доступен многим людям, этого будет много.

Идеальный способ - использовать его с CDN и указывать сервер CDN на ваш сервер ресурсов/веб-сервер.

+0

Итак, это было бы здорово, но я обслуживаю все содержимое моего сайта через SSL. Я получаю ошибки «не доверяемой стороны», когда мой CDN пытается обслуживать изображения моего веб-сайта через CNAME, но без моих сертификатов SSL; справедливо. – Costa

1

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

Документация:

CouchDB управляет ETags для вложений, а также для документов или представления. Клиенты, которые кэшировали фотографии, уже получат легкий ответ 304 для каждого идентичного запроса. Вы можете попробовать его с моим блоком на основе CouchDB lbl.io. Откройте свою любимую панель браузера и наблюдайте за запросами изображения во время нескольких обновлений.

Подсказка 1. Если у вас есть выбор между встроенным вложением-загрузкой (Base64, закодированным в документе, 1 запросом на создание документа с вложением) 2 запроса на создание документа со вложением или 1 запрос на создание вложения, когда документ уже существует) .... затем выберите второй. Его более эффективно обрабатывается CouchDB.

Подсказка 2: Вы можете configure CouchDB to handle gzip compression by the content-type вложений. Это значительно снижает нагрузку.

+0

1) Как насчет SSL? Весь сайт работает через SSL. – Costa

+0

2) My CouchDB не является общедоступным, у него есть имя пользователя и пароль. Клиент не может получить доступ к изображениям непосредственно из CouchDB (по крайней мере, не с базовым auth), потому что я буду раскрывать свое имя и пароль db в атрибуте src. – Costa

+1

A 1) Все заявления действительны для запросов через SSL. Я бы рекомендовал использовать HAproxy перед CouchDB для включения SSL (конфигурация SSL CouchDBs может быть сложной для настройки в качестве сервера безопасности класса A). –

1

Я просто свалка аватаров в /web/images/avatars, хранится имя файла только в CouchDB, и служить папку с express.static()

Вы, конечно, можете использовать вложение CouchDB

Вы также можете создать амазонка s3 ведро и сохранить абсолютный https-путь на ваших пользовательских объектах

+0

Я бы хотел использовать S3 для пользовательских изображений, так что это полезно, но меня беспокоят проблемы SEO по размещению URL-адресов S3 в моих атрибутах src изображений. Разве вы не думаете, что вы не основали? – Costa

+0

Кроме того, S3 по-прежнему использует SHA1, и он дает предупреждения браузера, uggh. – Costa

+0

* лампочка-клик * – Plato

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