Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Жуткие тормоза при использовании IHttpHandler
|
|||
|---|---|---|---|
|
#18+
В базе хранятся картинки в поле типа image, я их считываю в массив байт и выдаю в стандартный асповский имедж. Делаю это во время загрузки страницы. Наблюдаю при этом жуткие тормоза, причем чем больше картинок надо вывести, тем сильнее тормоза. Вот как я это делаю: public class PictureHandler : IHttpHandler { bool IHttpHandler.IsReusable { get { return false; } } void IHttpHandler.ProcessRequest(HttpContext context) { HttpRequest Request = context.Request; HttpResponse Response = context.Response; int ID = Int32.Parse(Request.QueryString["ID"]); System.Configuration.Configuration rootConfig = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("/Prog"); string connStr = rootConfig.ConnectionStrings.ConnectionStrings["ConnectionString"].ConnectionString; SqlConnection myConn = new SqlConnection(connStr); byte[] img = null; SqlCommand cmd = new SqlCommand("SELECT Photo_Avatar FROM Photo WHERE Photo_ID = @ID", myConn); cmd.Parameters.AddWithValue("@ID", ID); myConn.Open(); img = (byte[])cmd.ExecuteScalar(); if (img != null) { //context.Response.ContentType = "image/jpeg"; context.Response.BinaryWrite(img); } } } ... img.ImageUrl = "photo.axd?ID=" + sID; Подскажите пожалуйста, что я делаю неправильно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2013, 10:14 |
|
||
|
Жуткие тормоза при использовании IHttpHandler
|
|||
|---|---|---|---|
|
#18+
Хендлер нормальный, возможно данные в таблице Photo_Avatar много, а на Photo_ID не индексное поле. Или тормоза при обращении к БД на коммукационном уровне. Где и сколько выводишь картинок? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2013, 10:28 |
|
||
|
Жуткие тормоза при использовании IHttpHandler
|
|||
|---|---|---|---|
|
#18+
запрос по скул проверял? п.с. ну емае легкий врапер над чистым адо нет сложно чтоль замутить? такую лапшу ж не приятно писать и читать п.с. п.с. а то что конекшен и команду надо освобождать вас не смущает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2013, 10:36 |
|
||
|
Жуткие тормоза при использовании IHttpHandler
|
|||
|---|---|---|---|
|
#18+
МСУ, картинки вывожу в обычный table в Repeatere. Их не много сейчас в таблице, меньше 100. За раз вывожу не более 10 (это занимает секунд 20). Поле Photo_ID индексируемо. handmadeFromRu, про команд и конекшн знаю, спасибо что напомнили :) Про "легкий врапер" не понял, ссылку бы :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2013, 11:05 |
|
||
|
Жуткие тормоза при использовании IHttpHandler
|
|||
|---|---|---|---|
|
#18+
Oleg_Oleg, какого размера картинки? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2013, 11:13 |
|
||
|
Жуткие тормоза при использовании IHttpHandler
|
|||
|---|---|---|---|
|
#18+
ну если захотите - сами найдете в гугле про врапер инфу...суть в том чтоб скрыть "кишки" (рутинную работу) по подключению и созданию команды за классом который и подчистить ресурсы в итоге. Вы уверены что именно хендлер тормозит, а не биндинг каких либо еще контролов на странице? как проверили? через фаербаг, к примеру, в таймлайне? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2013, 11:48 |
|
||
|
Жуткие тормоза при использовании IHttpHandler
|
|||
|---|---|---|---|
|
#18+
п.с. и зачем обращение через axd? http://stackoverflow.com/questions/2354983/difference-between-axd-and-ashx-handlers ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2013, 11:54 |
|
||
|
Жуткие тормоза при использовании IHttpHandler
|
|||
|---|---|---|---|
|
#18+
Oleg_OlegЗа раз вывожу не более 10 (это занимает секунд 20). Нихрена себе. Я надеюсь, ты юзаешь thumbnail? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2013, 11:56 |
|
||
|
Жуткие тормоза при использовании IHttpHandler
|
|||
|---|---|---|---|
|
#18+
myConn.Close() - есть дальше в коде? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2013, 12:41 |
|
||
|
Жуткие тормоза при использовании IHttpHandler
|
|||
|---|---|---|---|
|
#18+
Oleg_Oleg, видимо причина тормозов в большом объеме данных. Не исключено также что большое кол-во одновременных запросов к серверу съедает все доступные рабочие потоки ASP.NET. Надо избавиться от лишних запросов с помощью кеширования (см. ниже) или сделав обработчик асихронным чтобы запрос к БД не блокировал поток ASP.NET. Также иожно подумать а нужно ли хранить картинки к БД раз это вызывает проблемы. Есть смысл добавить заголовки кеширования чтобы избежать выдачи данных которые уже есть у клиента или неизменялись. Если картинки не меняются, то можно Expires с датой на месяц/год вперед указать. Если меняются, то можно указывать Expires с датой немного в будущем или реализовать поддержку conditional GET с помощью Last-Modified/If-Modified-Since или E-Tag/If-None-Match. Из IsReusable я бы возвращал truе т.к. приведенный тобой код является реентерабельным. SqlConnection лучше окружать в блок using чтобы быть уверенным, что оно будет закрыто. Oleg_Oleg Код: c# 1. 2. Это короче можно записать: Код: c# 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2013, 13:09 |
|
||
|
Жуткие тормоза при использовании IHttpHandler
|
|||
|---|---|---|---|
|
#18+
ЕвгенийВ, уже добавил :) МСУ, ресайз картинки делал через Bitmap, сейчас переписал на WebImage. handmadeFromRu, axd, ashx - никакого влияния не оказывает. А что нужно в web.config писать? Я пишу <handlers> <add name="photo" preCondition="classicMode,runtimeVersionv2.0,bitness32" verb="*" path="photo.axd" type="PictureHandler" modules="IsapiModule" scriptProcessor="C:\Windows\Microsoft.net\framework\v2.0.50727\aspnet_isapi.dll" resourceType="Unspecified"/> </handlers> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2013, 13:09 |
|
||
|
Жуткие тормоза при использовании IHttpHandler
|
|||
|---|---|---|---|
|
#18+
Oleg_OlegМСУ, ресайз картинки делал через Bitmap, сейчас переписал на WebImage Я тебя про thumbnail спрашивал, а не про инструменты. 1. Еще раз, ты используешь thumbnail изображения? 2. Какие размеры картинок? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2013, 13:19 |
|
||
|
Жуткие тормоза при использовании IHttpHandler
|
|||
|---|---|---|---|
|
#18+
дело не во влияние. если глянул бы ссылку понял бы. я ж не говорил что изза этого потеря скорости ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2013, 13:27 |
|
||
|
Жуткие тормоза при использовании IHttpHandler
|
|||
|---|---|---|---|
|
#18+
ну так что именно отдача картинки медленно идет? как мерили то? или может весь хтмл ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2013, 13:33 |
|
||
|
Жуткие тормоза при использовании IHttpHandler
|
|||
|---|---|---|---|
|
#18+
Oleg_Olegресайз картинки делал через Bitmap, сейчас переписал на WebImage. ресайз на лету что ли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2013, 13:33 |
|
||
|
Жуткие тормоза при использовании IHttpHandler
|
|||
|---|---|---|---|
|
#18+
Oleg_Oleg, чтобы что-то говорить о медленной скорости, для начала покажи графический скрин гет запросов из фаербага или девтулзов. Потом будет разговор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2013, 13:39 |
|
||
|
Жуткие тормоза при использовании IHttpHandler
|
|||
|---|---|---|---|
|
#18+
Возможно Ваш хэндлер тормозит из-за того что Вы Connection не закрываете.. создание Connection-а лучше бы конечно делать в блоке using - чтобы Dispose() вызвался.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2013, 03:39 |
|
||
|
Жуткие тормоза при использовании IHttpHandler
|
|||
|---|---|---|---|
|
#18+
МСУ, thumbnail не использую. Изопропил, ну наверное можно это назвать ресайзом на лету. _Case, ЕвгенийВ, действительно вроде как стало побыстрее, после того как начал правильно работать с конекшином. handmadeFromRu, похоже что страница вся долго грузится (там много чего еще есть помимо этих картинок). Наконец-то установил я себе Firebug, теперь вижу сколько выполняются get запросы на странице. Время ответа на запрос для моих картинок в интервале от 280ms до 500ms. Это много или нормально? Это самые долгие getы после основного geta страницы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2013, 14:40 |
|
||
|
Жуткие тормоза при использовании IHttpHandler
|
|||
|---|---|---|---|
|
#18+
Oleg_OlegМСУ, thumbnail не использую. И после этого ты еще жалуешься на низкую скорость? Oleg_OlegИзопропил, ну наверное можно это назвать ресайзом на лету. "Наверное" не катит: либо ты ресайзишь картинку на лету, либо отдаешь её такой, как она есть. Два варианта. Oleg_Olegпохоже что страница вся долго грузится Неужели? Попробуй тебе видео фильмы грузить на страницу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2013, 14:44 |
|
||
|
|

start [/forum/topic.php?fid=18&msg=38296112&tid=1358348]: |
0ms |
get settings: |
7ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
59ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
2ms |
| others: | 214ms |
| total: | 377ms |

| 0 / 0 |
