powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / MVC - Можно ли сделать галерею картинок без кучи запросов?
25 сообщений из 26, страница 1 из 2
MVC - Можно ли сделать галерею картинок без кучи запросов?
    #38427966
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скажем, есть у меня коллекция моделек с полями в виде картинок. Я могу эту коллецию загрузить одним запросом из БД, при этом картинки будут в виде байтовых массивов. Теперь мне нужно сформировать ХТМЛ с этими картинками в представлении. Как?

Везде советуют завести специальный метод в контроллере и возвращать FilePathResult методом Controller.File. Этому Controller.File надо передать байтовый массив. Вроде, всё есть, но как конкретно сформировать представление с группой картинок? Надо же как-то несколько раз FilePathResult вернуть или как?

Ещё советуют каждую картинку грузить отдельным запросом. Т. е. коллеция моих картинок должна представлять из себя не коллецию с конкретным содержимым картинок, а только с их айдишниками, например. Тогда в представлении формируется коллеция УРЛов, которые ведут к специальному методу контроллера, который принимает этот самый айдишник картинки и грузит её отдельным запросом в БД (ну, и отдельным запросом на сервер, как я понимаю).


Так вот, как лучше сделать? Что-то мне не нравится версия с отдельным запросом на каждую картинку.
...
Рейтинг: 0 / 0
MVC - Можно ли сделать галерею картинок без кучи запросов?
    #38427971
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320Что-то мне не нравится версия с отдельным запросом на каждую картинку.поговорите об этом с Вашим сотрудником, занимающимся СЕО
...
Рейтинг: 0 / 0
MVC - Можно ли сделать галерею картинок без кучи запросов?
    #38427990
товарисчь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
user7320,

на каждую картинку один запрос. если хочется сразу несколько, упаковываем в одну большую картинку и "режем" на кусочки при отображении с помощью CSS блоков со смещениями (погуглите " CSS спрайты ")

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

лучший для вас способ, это не изобретать велосипед, а хранить картинки на диске, а в базе данных имена файлов. тогда обо всём позаботиться за вас IIS.
...
Рейтинг: 0 / 0
MVC - Можно ли сделать галерею картинок без кучи запросов?
    #38427995
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
товарисчьна каждую картинку один запрос...+1
...
Рейтинг: 0 / 0
MVC - Можно ли сделать галерею картинок без кучи запросов?
    #38428075
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
товарисчьлучший для вас способ, это не изобретать велосипед, а хранить картинки на диске
холивар стартед
...
Рейтинг: 0 / 0
MVC - Можно ли сделать галерею картинок без кучи запросов?
    #38428081
st_st
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если это часть вёрстки, то пихаются в спрайт и ложатся на диск одним файлом. Если это фото продаваемых товаров (например в интернет-магазине), то каждый файл отдельно.
...
Рейтинг: 0 / 0
MVC - Можно ли сделать галерею картинок без кучи запросов?
    #38428086
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320Что-то мне не нравится версия с отдельным запросом на каждую картинку.Это стандартный метод, работающий так испокон интернетов, и он самый правильный.
...
Рейтинг: 0 / 0
MVC - Можно ли сделать галерею картинок без кучи запросов?
    #38428158
товарисчь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Изопропилтоварисчьлучший для вас способ, это не изобретать велосипед, а хранить картинки на диске
холивар стартед

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

http://stackoverflow.com/questions/186062/can-an-asp-net-mvc-controller-return-an-image

MVC: 7.6 milliseconds per photo
Direct: 6.7 milliseconds per photo


проблема заключается в другом.

это поддержка тегов Etag, Last-Modified (устар.) и Cache-Control.
при реализации с помощью контроллера обеспечить эту поддержку придётся вручную.

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

какой вариант лучше/хуже решается исходя из возможностей и потребностей. я посчитал, что для ТС лучше файлы (меньше заморочек).
...
Рейтинг: 0 / 0
MVC - Можно ли сделать галерею картинок без кучи запросов?
    #38428174
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На каждую картинку - свой запрос.
Давайте не спорить. Это - проверено.
Насчёт спрайтов - они не нужны, если каждая картинка хранится в базе. Даже, если картинки хранится в ФС, один хрен, спрайты не нужны. Хотя бы по той причине, что картинки с разными урлами загружаются в разных потоках.
...
Рейтинг: 0 / 0
MVC - Можно ли сделать галерею картинок без кучи запросов?
    #38428194
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShSergeДавайте не спорить.Банхаммером их!
...
Рейтинг: 0 / 0
MVC - Можно ли сделать галерею картинок без кучи запросов?
    #38428212
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyShSergeДавайте не спорить.Банхаммером их!
Уже двоих прибил. Хватит на сегодня.
...
Рейтинг: 0 / 0
MVC - Можно ли сделать галерею картинок без кучи запросов?
    #38428356
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
товарисчьИзопропилпропущено...

холивар стартед

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

http://stackoverflow.com/questions/186062/can-an-asp-net-mvc-controller-return-an-image

MVC: 7.6 milliseconds per photo
Direct: 6.7 milliseconds per photo


проблема заключается в другом.

это поддержка тегов Etag, Last-Modified (устар.) и Cache-Control.
при реализации с помощью контроллера обеспечить эту поддержку придётся вручную.

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

какой вариант лучше/хуже решается исходя из возможностей и потребностей. я посчитал, что для ТС лучше файлы (меньше заморочек).
Я уже второй раз реализовал отдачу через FilePathResult (который принимает байтовый массив) и мне проще именно так. Картинки в БД храню сразу в полном виде и в виде миниатюры. На всякий случай написал функцию на WIC (по примеру, похожему на ), которая позволит вернуть миниатюру в нужном размере (ей же эти миниатюры в БД и создавал). Но ей пользоваться при регулярной отдаче картинок не хочу, т. к. подозреваю, что если всякий будет каждый раз разного размера миниатюры генерить, то сервер сильно нагрузит.

Вобщем, если при прорисовке галареи на сервер идёт штук 100 запросов только на миниатюры, то это нормально? Это же сто ОТДЕЛЬНЫХ запросов к БД.
...
Рейтинг: 0 / 0
MVC - Можно ли сделать галерею картинок без кучи запросов?
    #38428359
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Паганельuser7320Что-то мне не нравится версия с отдельным запросом на каждую картинку.поговорите об этом с Вашим сотрудником, занимающимся СЕО
Я тут сам по себе. И я не разбираюсь в СЕО. Я и прошу, чтобы мне подсказали - потому что не разбираюсь. Если бы разбирался, я бы давал советы, а не просил. ))
...
Рейтинг: 0 / 0
MVC - Можно ли сделать галерею картинок без кучи запросов?
    #38428363
Фотография Паганель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320Я тут сам по себе. И я не разбираюсь в СЕО. Я и прошу, чтобы мне подсказалия тоже
но я думал, что у Вас есть сотрудник, который разбирается
жаль что нету
...
Рейтинг: 0 / 0
MVC - Можно ли сделать галерею картинок без кучи запросов?
    #38428379
товарисчь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
user7320Я уже второй раз реализовал отдачу через FilePathResult (который принимает байтовый массив) и мне проще именно так. Картинки в БД храню сразу в полном виде и в виде миниатюры. На всякий случай написал функцию на WIC (по примеру, похожему на ), которая позволит вернуть миниатюру в нужном размере (ей же эти миниатюры в БД и создавал). Но ей пользоваться при регулярной отдаче картинок не хочу, т. к. подозреваю, что если всякий будет каждый раз разного размера миниатюры генерить, то сервер сильно нагрузит.

Вобщем, если при прорисовке галареи на сервер идёт штук 100 запросов только на миниатюры, то это нормально? Это же сто ОТДЕЛЬНЫХ запросов к БД.

кеширование решает эту проблему на раз-два.

1. подготовленные миниатюры надо кешировать на диске и отдавать при их наличии с диска вместо того, чтобы создавать ещё раз миниатюру
2. обратите внимание ещё раз на обработку тегов ETag / If-None-Match
3. Cache-Control (public)

и проблем не будет, хоть 1000000 запросов.

П.С. могу порекомендовать набирающую обороты либу для обработки изображений ImageProcessor
...
Рейтинг: 0 / 0
MVC - Можно ли сделать галерею картинок без кучи запросов?
    #38428392
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
товарисчь, парень конечно старается, атрибутом кешированя кабы не сложно, а вот доехать с 404 до 304 тут время надо...
можно грузить не все фото, а по мере прокрутки - или что там у нас, многие дальше трех щелчков по галерее не делают, а бредут дальше..
...
Рейтинг: 0 / 0
MVC - Можно ли сделать галерею картинок без кучи запросов?
    #38428400
товарисчь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Где-то в степи,

браузер не делает больше определенного количества запросов одновременно. бояться нечего :)
...
Рейтинг: 0 / 0
MVC - Можно ли сделать галерею картинок без кучи запросов?
    #38428440
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я всегда балдел от этой штуки http://galleria.io/themes/
...
Рейтинг: 0 / 0
MVC - Можно ли сделать галерею картинок без кучи запросов?
    #38428443
st_st
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
url-ы картинок из базы считал, браузеру отдал и забыл. Превью обычно генерятся при аплоаде и раскидываются куда надо. Сами картинки отдадутся напрямую веб-сервером с диска, хоть их 100, хоть 200, а если развёрнута CDN (хотя можно с контроллером ентим бегать и пихать его на все серваки), Linux + Nginx, так вообще влёт, без всяких контроллеров, фиголлеров и прочих ненужных тормозящих прокладок. Защиту от хотлинкинга можно и в конфиге сервера настроить. Вот если картинки только авторизованым юзерам отдавать, тогда нужно код городить с Etag-ами и прочим, а так х.з. И 100 картинок за раз не много ли юзеру? Загрузили несколько, перелестнул - грузим вторую часть и т.д.
...
Рейтинг: 0 / 0
MVC - Можно ли сделать галерею картинок без кучи запросов?
    #38428444
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
товарисчьuser7320Я уже второй раз реализовал отдачу через FilePathResult (который принимает байтовый массив) и мне проще именно так. Картинки в БД храню сразу в полном виде и в виде миниатюры. На всякий случай написал функцию на WIC (по примеру, похожему на ), которая позволит вернуть миниатюру в нужном размере (ей же эти миниатюры в БД и создавал). Но ей пользоваться при регулярной отдаче картинок не хочу, т. к. подозреваю, что если всякий будет каждый раз разного размера миниатюры генерить, то сервер сильно нагрузит.

Вобщем, если при прорисовке галареи на сервер идёт штук 100 запросов только на миниатюры, то это нормально? Это же сто ОТДЕЛЬНЫХ запросов к БД.

кеширование решает эту проблему на раз-два.

1. подготовленные миниатюры надо кешировать на диске и отдавать при их наличии с диска вместо того, чтобы создавать ещё раз миниатюру
2. обратите внимание ещё раз на обработку тегов ETag / If-None-Match
3. Cache-Control (public)

и проблем не будет, хоть 1000000 запросов.

П.С. могу порекомендовать набирающую обороты либу для обработки изображений ImageProcessor
Про кеширование спасибо.

Про либу - глянул на пример миниатюры (см. вложение) в увеличенном виде - заметил артефакт на краю изображения. У меня при использовании WIC такой же. Если рендерить в WPF и задавать при этом SnapsToDevicePixels, артефакт пропадает. Вобщем, у меня ощущение, что моя либа не хуже. ))
...
Рейтинг: 0 / 0
MVC - Можно ли сделать галерею картинок без кучи запросов?
    #38428493
товарисчь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
user7320Про кеширование спасибо.

Про либу - глянул на пример миниатюры (см. вложение) в увеличенном виде - заметил артефакт на краю изображения. У меня при использовании WIC такой же. Если рендерить в WPF и задавать при этом SnapsToDevicePixels, артефакт пропадает. Вобщем, у меня ощущение, что моя либа не хуже. ))

эта либа использует System.Drawing, так что болеет некоторыми её недостатками.

решения есть 2 штуки:

1. ресайзить на 2px больше, потом кропить.
2. написать Issue , как я уже сказал либа очень быстро развивается и активно набирает обороты. автор реагирует быстро.

но речь ведь не об этом :)
...
Рейтинг: 0 / 0
MVC - Можно ли сделать галерею картинок без кучи запросов?
    #38428506
товарисчь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
st_sturl-ы картинок из базы считал, браузеру отдал и забыл. Превью обычно генерятся при аплоаде и раскидываются куда надо. Сами картинки отдадутся напрямую веб-сервером с диска, хоть их 100, хоть 200, а если развёрнута CDN (хотя можно с контроллером ентим бегать и пихать его на все серваки), Linux + Nginx, так вообще влёт, без всяких контроллеров, фиголлеров и прочих ненужных тормозящих прокладок. Защиту от хотлинкинга можно и в конфиге сервера настроить. Вот если картинки только авторизованым юзерам отдавать, тогда нужно код городить с Etag-ами и прочим, а так х.з. И 100 картинок за раз не много ли юзеру? Загрузили несколько, перелестнул - грузим вторую часть и т.д.

контролировать генерацию превью при аплоаде — имхо, нарастающий ком проблем при сопровождении и разработке. достаточно хранить всего одну единственную копию оригинального изображения. а отдавать в нужном качестве/размере, преобразовывая и складывая в кеш, такое решение хорошо масштабируется. кеш можно в любой момент грохнуть без сожаления и насоздавать других миниатюр по запросу, если вдруг дизайнеру приспичило срочно увеличить все миниатюрки на 10px по ширине. и ему плевать.
...
Рейтинг: 0 / 0
MVC - Можно ли сделать галерею картинок без кучи запросов?
    #38428579
st_st
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Главное есть оригинал изображения. И если дизайнер поменял размеры на 10px, мы также можем пройтись по базе, взять по url оригиналы и нагенерить новых превью (тут компьютер желательно помощнее). Размеры устаканиваются обычно ещё на этапе создания проекта и далее меняются редко. В работе видел оба варианта, один с кэшем (пришлось делать из-за динамических размеров), другой без, разницы особо не заметно, но мне как-то ближе вариант использования только веб-сервера для отдачи картинок без нагромождения дополнительного кода. Вариант с кэшем кстати каспер забанил потом после обновления, рисунки повырезал, непонравился ему chunked, пришлось content-length выдавать.
...
Рейтинг: 0 / 0
MVC - Можно ли сделать галерею картинок без кучи запросов?
    #38428612
товарисчь
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
st_st,

знаю одно, сомнительно-полезное на практике, применение для chunked изображений: организация долговременного коннекта на старых браузерах, для перекидывания через бесконечный gif всяких пакетиков :) чаты, там всякие делать, активные уведомления...

или прокидывать большие зипы/рары/прон под видом jpg для обхода файерволлов. может поэтому каспер и режет?
...
Рейтинг: 0 / 0
MVC - Можно ли сделать галерею картинок без кучи запросов?
    #38429056
st_st
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всё было проще, изображения просто считывались и отдавались как есть (без возни с хедерами респонса, за исключением content-type), chunked веб-сервер подпихивал сам автоматом. Ну а каспер видит, с сервера летит photo.jpg, размера нет (content-length), какими-то чанками, ну и резал его, на форумах должна встречаться похожая проблема. Лечилось просто выставлением content-length и тогда chunked сервер уже не подпихивал.
...
Рейтинг: 0 / 0
25 сообщений из 26, страница 1 из 2
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / MVC - Можно ли сделать галерею картинок без кучи запросов?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]