Альтернативы CFContent? - PullRequest
       0

Альтернативы CFContent?

1 голос
/ 14 декабря 2010

В настоящее время я храню файлы, загруженные в CMS, в базе данных. Мой вопрос не просит альтернативы этому. У меня проблема при передаче файла с общедоступного веб-сервера.

В идеале я могу кэшировать файлы на веб-сервере в файловой системе, но есть проблема с этим. Система позволяет загружать разные файлы с одним и тем же именем файла, и я не хочу кэшировать файлы, используя хэш UUID или MD5, потому что я хочу, чтобы конечный пользователь мог иметь имя файла в диалоговом окне сохранения.

У меня проблемы с cfcontent:

  1. Каждый запрос к файлу загружает файл в память, я не против сделать это один раз, чтобы построить кеш.
  2. cfcontent не допускает разбиение загрузки по http, так что конечный пользователь прекращает загрузку файла и позже пытается возобновить его.
  3. Слишком много запросов к большим файлам свяжет параллельные запросы и вынудит обычные запросы страниц в очередь.

P.S. Файлы хранятся в базе данных, потому что база данных является единственной формой связи между CMS и общедоступным сайтом.

Ответы [ 3 ]

2 голосов
/ 14 декабря 2010

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

Итак, допустим, кто-то загрузил document.docx, и ему был присвоен идентификатор 3. Ваш URL будет указывать на /content/3/document.docx или аналогичный.

2 голосов
/ 14 декабря 2010

недавно в блоге Рэймонда Кэмдена была огромная дискуссия по этому поводу:

http://www.coldfusionjedi.com/index.cfm/2010/11/23/Best-alternative-to-cfcontent-for-large-files

0 голосов
/ 16 декабря 2010

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

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

У меня был быстрый просмотр в Google , но я не смог найти ничего, что конкретно отвечало бы вашим потребностям (что странно, я бы подумал, что что-то будет), но это будет достаточно просто напишите сервлет и разверните его на JRUN для обслуживания изображений, используя те средства, которые вам нужны, в зависимости от того, насколько хороши ваши знания Java.

...