Каков наилучший способ отправки изображений в браузер, когда они должны храниться в виде двоичных объектов в базе данных? - PullRequest
1 голос
/ 11 июля 2009

У меня есть база данных, содержащая несколько изображений в полях BLOB-объектов. Для веб-приложения я должен их отобразить.

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

Я могу думать о следующем:

  • «Кэшировать» большие двоичные объекты во внешние файлы и отправлять файлы в браузер.
  • Читайте их непосредственно из базы данных каждый раз, когда это требуется.

Некоторые дополнительные факты:

  • Я не могу изменить базу данных и полностью избавиться от больших двоичных объектов и сохранить только ссылки на файлы в базе данных (как в старые добрые времена Access), потому что база данных используется другим приложением, которому на самом деле требуются большие двоичные объекты.
  • Изображения меняются редко, т. Е. Если изображение находится в базе данных, оно в основном остается таким всегда.
  • Будет много обращений к фотографиям для чтения, будет отображаться 10-100 изображений для каждого просмотра. (В зависимости от настроек пользователя)
  • Изображения относительно малы, <500 КБ </li>

Ответы [ 2 ]

1 голос
/ 12 июля 2009

Одной из важных вещей является использование правильного контроля HTTP-кэша ... то есть правильная установка сроков действия, правильное реагирование на HEAD запросы (не все платформы / веб-серверы позволяют это) ...

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

Greetz

back2dos

1 голос
/ 11 июля 2009

Я бы предложил комбинацию двух ваших идей: при первом запросе товара прочитайте его из базы данных. Но после этого убедитесь, что они кэшируются чем-то вроде Squid, чтобы вам не приходилось получать их каждый раз, когда они запрашиваются.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...