Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
MVC - Можно ли сделать галерею картинок без кучи запросов?
|
|||
|---|---|---|---|
|
#18+
Скажем, есть у меня коллекция моделек с полями в виде картинок. Я могу эту коллецию загрузить одним запросом из БД, при этом картинки будут в виде байтовых массивов. Теперь мне нужно сформировать ХТМЛ с этими картинками в представлении. Как? Везде советуют завести специальный метод в контроллере и возвращать FilePathResult методом Controller.File. Этому Controller.File надо передать байтовый массив. Вроде, всё есть, но как конкретно сформировать представление с группой картинок? Надо же как-то несколько раз FilePathResult вернуть или как? Ещё советуют каждую картинку грузить отдельным запросом. Т. е. коллеция моих картинок должна представлять из себя не коллецию с конкретным содержимым картинок, а только с их айдишниками, например. Тогда в представлении формируется коллеция УРЛов, которые ведут к специальному методу контроллера, который принимает этот самый айдишник картинки и грузит её отдельным запросом в БД (ну, и отдельным запросом на сервер, как я понимаю). Так вот, как лучше сделать? Что-то мне не нравится версия с отдельным запросом на каждую картинку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2013, 12:30 |
|
||
|
MVC - Можно ли сделать галерею картинок без кучи запросов?
|
|||
|---|---|---|---|
|
#18+
user7320Что-то мне не нравится версия с отдельным запросом на каждую картинку.поговорите об этом с Вашим сотрудником, занимающимся СЕО ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2013, 12:32 |
|
||
|
MVC - Можно ли сделать галерею картинок без кучи запросов?
|
|||
|---|---|---|---|
|
#18+
user7320, на каждую картинку один запрос. если хочется сразу несколько, упаковываем в одну большую картинку и "режем" на кусочки при отображении с помощью CSS блоков со смещениями (погуглите " CSS спрайты ") если хотите отображать картинки через контроллер с возвращением байтового массива, необходимо позаботиться о кешировании. требуется как минимум с каждой картинкой возвращать Etag. и проверять его на изменение при запросе. иначе тормоза будут жуткие. лучший для вас способ, это не изобретать велосипед, а хранить картинки на диске, а в базе данных имена файлов. тогда обо всём позаботиться за вас IIS. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2013, 12:41 |
|
||
|
MVC - Можно ли сделать галерею картинок без кучи запросов?
|
|||
|---|---|---|---|
|
#18+
товарисчьна каждую картинку один запрос...+1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2013, 12:44 |
|
||
|
MVC - Можно ли сделать галерею картинок без кучи запросов?
|
|||
|---|---|---|---|
|
#18+
товарисчьлучший для вас способ, это не изобретать велосипед, а хранить картинки на диске холивар стартед ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2013, 13:26 |
|
||
|
MVC - Можно ли сделать галерею картинок без кучи запросов?
|
|||
|---|---|---|---|
|
#18+
Если это часть вёрстки, то пихаются в спрайт и ложатся на диск одним файлом. Если это фото продаваемых товаров (например в интернет-магазине), то каждый файл отдельно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2013, 13:30 |
|
||
|
MVC - Можно ли сделать галерею картинок без кучи запросов?
|
|||
|---|---|---|---|
|
#18+
user7320Что-то мне не нравится версия с отдельным запросом на каждую картинку.Это стандартный метод, работающий так испокон интернетов, и он самый правильный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2013, 13:31 |
|
||
|
MVC - Можно ли сделать галерею картинок без кучи запросов?
|
|||
|---|---|---|---|
|
#18+
Изопропилтоварисчьлучший для вас способ, это не изобретать велосипед, а хранить картинки на диске холивар стартед никакого холивара быть не может. производительность контроллера в отдаче изображений байтовым потоком не сильно отличается от прямого обращения к файлу (сессии для контроллера должны быть отключены). 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-и, логгировать обращения и запрещать отдачу изображения, если на него ссылаются с чужого сайта (хотлинкинг). какой вариант лучше/хуже решается исходя из возможностей и потребностей. я посчитал, что для ТС лучше файлы (меньше заморочек). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2013, 13:57 |
|
||
|
MVC - Можно ли сделать галерею картинок без кучи запросов?
|
|||
|---|---|---|---|
|
#18+
На каждую картинку - свой запрос. Давайте не спорить. Это - проверено. Насчёт спрайтов - они не нужны, если каждая картинка хранится в базе. Даже, если картинки хранится в ФС, один хрен, спрайты не нужны. Хотя бы по той причине, что картинки с разными урлами загружаются в разных потоках. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2013, 14:03 |
|
||
|
MVC - Можно ли сделать галерею картинок без кучи запросов?
|
|||
|---|---|---|---|
|
#18+
ShSergeДавайте не спорить.Банхаммером их! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2013, 14:12 |
|
||
|
MVC - Можно ли сделать галерею картинок без кучи запросов?
|
|||
|---|---|---|---|
|
#18+
AntonariyShSergeДавайте не спорить.Банхаммером их! Уже двоих прибил. Хватит на сегодня. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2013, 14:16 |
|
||
|
MVC - Можно ли сделать галерею картинок без кучи запросов?
|
|||
|---|---|---|---|
|
#18+
товарисчьИзопропилпропущено... холивар стартед никакого холивара быть не может. производительность контроллера в отдаче изображений байтовым потоком не сильно отличается от прямого обращения к файлу (сессии для контроллера должны быть отключены). 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 запросов только на миниатюры, то это нормально? Это же сто ОТДЕЛЬНЫХ запросов к БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2013, 15:25 |
|
||
|
MVC - Можно ли сделать галерею картинок без кучи запросов?
|
|||
|---|---|---|---|
|
#18+
Паганельuser7320Что-то мне не нравится версия с отдельным запросом на каждую картинку.поговорите об этом с Вашим сотрудником, занимающимся СЕО Я тут сам по себе. И я не разбираюсь в СЕО. Я и прошу, чтобы мне подсказали - потому что не разбираюсь. Если бы разбирался, я бы давал советы, а не просил. )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2013, 15:26 |
|
||
|
MVC - Можно ли сделать галерею картинок без кучи запросов?
|
|||
|---|---|---|---|
|
#18+
user7320Я тут сам по себе. И я не разбираюсь в СЕО. Я и прошу, чтобы мне подсказалия тоже но я думал, что у Вас есть сотрудник, который разбирается жаль что нету ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2013, 15:29 |
|
||
|
MVC - Можно ли сделать галерею картинок без кучи запросов?
|
|||
|---|---|---|---|
|
#18+
user7320Я уже второй раз реализовал отдачу через FilePathResult (который принимает байтовый массив) и мне проще именно так. Картинки в БД храню сразу в полном виде и в виде миниатюры. На всякий случай написал функцию на WIC (по примеру, похожему на ), которая позволит вернуть миниатюру в нужном размере (ей же эти миниатюры в БД и создавал). Но ей пользоваться при регулярной отдаче картинок не хочу, т. к. подозреваю, что если всякий будет каждый раз разного размера миниатюры генерить, то сервер сильно нагрузит. Вобщем, если при прорисовке галареи на сервер идёт штук 100 запросов только на миниатюры, то это нормально? Это же сто ОТДЕЛЬНЫХ запросов к БД. кеширование решает эту проблему на раз-два. 1. подготовленные миниатюры надо кешировать на диске и отдавать при их наличии с диска вместо того, чтобы создавать ещё раз миниатюру 2. обратите внимание ещё раз на обработку тегов ETag / If-None-Match 3. Cache-Control (public) и проблем не будет, хоть 1000000 запросов. П.С. могу порекомендовать набирающую обороты либу для обработки изображений ImageProcessor ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2013, 15:38 |
|
||
|
MVC - Можно ли сделать галерею картинок без кучи запросов?
|
|||
|---|---|---|---|
|
#18+
товарисчь, парень конечно старается, атрибутом кешированя кабы не сложно, а вот доехать с 404 до 304 тут время надо... можно грузить не все фото, а по мере прокрутки - или что там у нас, многие дальше трех щелчков по галерее не делают, а бредут дальше.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2013, 15:44 |
|
||
|
MVC - Можно ли сделать галерею картинок без кучи запросов?
|
|||
|---|---|---|---|
|
#18+
Где-то в степи, браузер не делает больше определенного количества запросов одновременно. бояться нечего :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2013, 15:49 |
|
||
|
MVC - Можно ли сделать галерею картинок без кучи запросов?
|
|||
|---|---|---|---|
|
#18+
я всегда балдел от этой штуки http://galleria.io/themes/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2013, 16:04 |
|
||
|
MVC - Можно ли сделать галерею картинок без кучи запросов?
|
|||
|---|---|---|---|
|
#18+
url-ы картинок из базы считал, браузеру отдал и забыл. Превью обычно генерятся при аплоаде и раскидываются куда надо. Сами картинки отдадутся напрямую веб-сервером с диска, хоть их 100, хоть 200, а если развёрнута CDN (хотя можно с контроллером ентим бегать и пихать его на все серваки), Linux + Nginx, так вообще влёт, без всяких контроллеров, фиголлеров и прочих ненужных тормозящих прокладок. Защиту от хотлинкинга можно и в конфиге сервера настроить. Вот если картинки только авторизованым юзерам отдавать, тогда нужно код городить с Etag-ами и прочим, а так х.з. И 100 картинок за раз не много ли юзеру? Загрузили несколько, перелестнул - грузим вторую часть и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2013, 16:06 |
|
||
|
MVC - Можно ли сделать галерею картинок без кучи запросов?
|
|||
|---|---|---|---|
|
#18+
товарисчьuser7320Я уже второй раз реализовал отдачу через FilePathResult (который принимает байтовый массив) и мне проще именно так. Картинки в БД храню сразу в полном виде и в виде миниатюры. На всякий случай написал функцию на WIC (по примеру, похожему на ), которая позволит вернуть миниатюру в нужном размере (ей же эти миниатюры в БД и создавал). Но ей пользоваться при регулярной отдаче картинок не хочу, т. к. подозреваю, что если всякий будет каждый раз разного размера миниатюры генерить, то сервер сильно нагрузит. Вобщем, если при прорисовке галареи на сервер идёт штук 100 запросов только на миниатюры, то это нормально? Это же сто ОТДЕЛЬНЫХ запросов к БД. кеширование решает эту проблему на раз-два. 1. подготовленные миниатюры надо кешировать на диске и отдавать при их наличии с диска вместо того, чтобы создавать ещё раз миниатюру 2. обратите внимание ещё раз на обработку тегов ETag / If-None-Match 3. Cache-Control (public) и проблем не будет, хоть 1000000 запросов. П.С. могу порекомендовать набирающую обороты либу для обработки изображений ImageProcessor Про кеширование спасибо. Про либу - глянул на пример миниатюры (см. вложение) в увеличенном виде - заметил артефакт на краю изображения. У меня при использовании WIC такой же. Если рендерить в WPF и задавать при этом SnapsToDevicePixels, артефакт пропадает. Вобщем, у меня ощущение, что моя либа не хуже. )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2013, 16:07 |
|
||
|
MVC - Можно ли сделать галерею картинок без кучи запросов?
|
|||
|---|---|---|---|
|
#18+
user7320Про кеширование спасибо. Про либу - глянул на пример миниатюры (см. вложение) в увеличенном виде - заметил артефакт на краю изображения. У меня при использовании WIC такой же. Если рендерить в WPF и задавать при этом SnapsToDevicePixels, артефакт пропадает. Вобщем, у меня ощущение, что моя либа не хуже. )) эта либа использует System.Drawing, так что болеет некоторыми её недостатками. решения есть 2 штуки: 1. ресайзить на 2px больше, потом кропить. 2. написать Issue , как я уже сказал либа очень быстро развивается и активно набирает обороты. автор реагирует быстро. но речь ведь не об этом :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2013, 16:33 |
|
||
|
MVC - Можно ли сделать галерею картинок без кучи запросов?
|
|||
|---|---|---|---|
|
#18+
st_sturl-ы картинок из базы считал, браузеру отдал и забыл. Превью обычно генерятся при аплоаде и раскидываются куда надо. Сами картинки отдадутся напрямую веб-сервером с диска, хоть их 100, хоть 200, а если развёрнута CDN (хотя можно с контроллером ентим бегать и пихать его на все серваки), Linux + Nginx, так вообще влёт, без всяких контроллеров, фиголлеров и прочих ненужных тормозящих прокладок. Защиту от хотлинкинга можно и в конфиге сервера настроить. Вот если картинки только авторизованым юзерам отдавать, тогда нужно код городить с Etag-ами и прочим, а так х.з. И 100 картинок за раз не много ли юзеру? Загрузили несколько, перелестнул - грузим вторую часть и т.д. контролировать генерацию превью при аплоаде — имхо, нарастающий ком проблем при сопровождении и разработке. достаточно хранить всего одну единственную копию оригинального изображения. а отдавать в нужном качестве/размере, преобразовывая и складывая в кеш, такое решение хорошо масштабируется. кеш можно в любой момент грохнуть без сожаления и насоздавать других миниатюр по запросу, если вдруг дизайнеру приспичило срочно увеличить все миниатюрки на 10px по ширине. и ему плевать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2013, 16:43 |
|
||
|
MVC - Можно ли сделать галерею картинок без кучи запросов?
|
|||
|---|---|---|---|
|
#18+
Главное есть оригинал изображения. И если дизайнер поменял размеры на 10px, мы также можем пройтись по базе, взять по url оригиналы и нагенерить новых превью (тут компьютер желательно помощнее). Размеры устаканиваются обычно ещё на этапе создания проекта и далее меняются редко. В работе видел оба варианта, один с кэшем (пришлось делать из-за динамических размеров), другой без, разницы особо не заметно, но мне как-то ближе вариант использования только веб-сервера для отдачи картинок без нагромождения дополнительного кода. Вариант с кэшем кстати каспер забанил потом после обновления, рисунки повырезал, непонравился ему chunked, пришлось content-length выдавать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2013, 17:34 |
|
||
|
MVC - Можно ли сделать галерею картинок без кучи запросов?
|
|||
|---|---|---|---|
|
#18+
st_st, знаю одно, сомнительно-полезное на практике, применение для chunked изображений: организация долговременного коннекта на старых браузерах, для перекидывания через бесконечный gif всяких пакетиков :) чаты, там всякие делать, активные уведомления... или прокидывать большие зипы/рары/прон под видом jpg для обхода файерволлов. может поэтому каспер и режет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.10.2013, 17:56 |
|
||
|
MVC - Можно ли сделать галерею картинок без кучи запросов?
|
|||
|---|---|---|---|
|
#18+
Всё было проще, изображения просто считывались и отдавались как есть (без возни с хедерами респонса, за исключением content-type), chunked веб-сервер подпихивал сам автоматом. Ну а каспер видит, с сервера летит photo.jpg, размера нет (content-length), какими-то чанками, ну и резал его, на форумах должна встречаться похожая проблема. Лечилось просто выставлением content-length и тогда chunked сервер уже не подпихивал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.10.2013, 03:50 |
|
||
|
|

start [/forum/topic.php?fid=18&msg=38427971&tid=1358006]: |
0ms |
get settings: |
7ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
44ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
86ms |
get tp. blocked users: |
2ms |
| others: | 219ms |
| total: | 395ms |

| 0 / 0 |
