Хранение и получение изображений с помощью MVC и Sql Server - PullRequest
2 голосов
/ 15 января 2010

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

Пока что я думаю о том, чтобы хранить их в SQLСерверные столбцы.Это хорошая идея?У меня есть код загрузки и код хранения для этого.Моя задача - вернуть их.Я могу удалить и создать тег изображения на лету, но я беспокоюсь о том, чтобы получить доступ к базе данных для каждого.

Я думал о том, чтобы получить все изображения для пользователя и кэшировать их в asp.net.кеш на 10-30 секунд.Мне никогда не приходилось делать что-то подобное, поэтому мне было бы интересно услышать несколько разных подходов.Очевидно, изображения могут различаться по размеру, и я думал об определении предела размера, но я еще не дошел до этого.

Спасибо за вашу помощь.Пол Сперанса

Ответы [ 3 ]

2 голосов
/ 17 января 2010

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

Единственное исключение - если вы собираетесь использовать тип SQL 2008 FILESTREAM, который в основном использует файловую систему для хранения файлов и просто сохраняет ссылку на него в БД.

Определенно не храните необработанные данные изображения в столбце varbinary.

2 голосов
/ 15 января 2010

Я думаю, что IIS уже неплохо справляется с кэшированием статического содержимого, поэтому я, вероятно, просто сохранил бы изображения на диске и сохранил информацию об их размещении в БД.

0 голосов
/ 17 января 2010

Во-первых, вы можете изменить размер ваших изображений, прежде чем помещать их на сервер SQL. Кроме того, вы можете создать обработчик http, который извлекает изображения с сервера sql, но я бы установил кеш на минуту или две, а не меньше. Они не так сильно меняются.

context.Response.Cache.SetExpires(DateTime.Now.AddMinutes(10));

Другой вариант - сохранить на файловом сервере, вы можете записать эти файлы в любое место, где у IIS есть разрешения, и сохранить файл «url», например «C: \ images \ test.jpg», в базе данных. Но тогда вам нужно что-то написать, чтобы удалить файл, когда удаляется запись.

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