Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Жуткие тормоза при использовании IHttpHandler / 19 сообщений из 19, страница 1 из 1
13.06.2013, 10:14
    #38295732
Oleg_Oleg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Жуткие тормоза при использовании IHttpHandler
В базе хранятся картинки в поле типа 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;

Подскажите пожалуйста, что я делаю неправильно
...
Рейтинг: 0 / 0
13.06.2013, 10:28
    #38295753
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Жуткие тормоза при использовании IHttpHandler
Хендлер нормальный, возможно данные в таблице Photo_Avatar много, а на Photo_ID не индексное поле. Или тормоза при обращении к БД на коммукационном уровне. Где и сколько выводишь картинок?
...
Рейтинг: 0 / 0
13.06.2013, 10:36
    #38295769
handmadeFromRu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Жуткие тормоза при использовании IHttpHandler
запрос по скул проверял?

п.с. ну емае легкий врапер над чистым адо нет сложно чтоль замутить? такую лапшу ж не приятно писать и читать
п.с. п.с. а то что конекшен и команду надо освобождать вас не смущает?
...
Рейтинг: 0 / 0
13.06.2013, 11:05
    #38295823
Oleg_Oleg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Жуткие тормоза при использовании IHttpHandler
МСУ, картинки вывожу в обычный table в Repeatere. Их не много сейчас в таблице, меньше 100. За раз вывожу не более 10 (это занимает секунд 20). Поле Photo_ID индексируемо.
handmadeFromRu, про команд и конекшн знаю, спасибо что напомнили :) Про "легкий врапер" не понял, ссылку бы :)
...
Рейтинг: 0 / 0
13.06.2013, 11:13
    #38295837
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Жуткие тормоза при использовании IHttpHandler
Oleg_Oleg,

какого размера картинки?
...
Рейтинг: 0 / 0
13.06.2013, 11:48
    #38295911
handmadeFromRu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Жуткие тормоза при использовании IHttpHandler
ну если захотите - сами найдете в гугле про врапер инфу...суть в том чтоб скрыть "кишки" (рутинную работу) по подключению и созданию команды за классом который и подчистить ресурсы в итоге.
Вы уверены что именно хендлер тормозит, а не биндинг каких либо еще контролов на странице? как проверили? через фаербаг, к примеру, в таймлайне?
...
Рейтинг: 0 / 0
13.06.2013, 11:54
    #38295928
handmadeFromRu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Жуткие тормоза при использовании IHttpHandler
п.с. и зачем обращение через axd?
http://stackoverflow.com/questions/2354983/difference-between-axd-and-ashx-handlers
...
Рейтинг: 0 / 0
13.06.2013, 11:56
    #38295933
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Жуткие тормоза при использовании IHttpHandler
Oleg_OlegЗа раз вывожу не более 10 (это занимает секунд 20).
Нихрена себе. Я надеюсь, ты юзаешь thumbnail?
...
Рейтинг: 0 / 0
13.06.2013, 12:41
    #38296049
ЕвгенийВ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Жуткие тормоза при использовании IHttpHandler
myConn.Close() - есть дальше в коде?
...
Рейтинг: 0 / 0
13.06.2013, 13:09
    #38296110
bazile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Жуткие тормоза при использовании IHttpHandler
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.
System.Configuration.Configuration rootConfig = System.Web.Configuration.WebConfigurationManager.OpenWebConfiguration("/Prog");
string connStr = rootConfig.ConnectionStrings.ConnectionStrings["ConnectionString"].ConnectionString;


Это короче можно записать:
Код: c#
1.
string connStr =  ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
...
Рейтинг: 0 / 0
13.06.2013, 13:09
    #38296112
Oleg_Oleg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Жуткие тормоза при использовании IHttpHandler
ЕвгенийВ, уже добавил :)
МСУ, ресайз картинки делал через 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>
...
Рейтинг: 0 / 0
13.06.2013, 13:19
    #38296125
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Жуткие тормоза при использовании IHttpHandler
Oleg_OlegМСУ, ресайз картинки делал через Bitmap, сейчас переписал на WebImage
Я тебя про thumbnail спрашивал, а не про инструменты.

1. Еще раз, ты используешь thumbnail изображения?
2. Какие размеры картинок?
...
Рейтинг: 0 / 0
13.06.2013, 13:27
    #38296140
handmadeFromRu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Жуткие тормоза при использовании IHttpHandler
дело не во влияние. если глянул бы ссылку понял бы. я ж не говорил что изза этого потеря скорости
...
Рейтинг: 0 / 0
13.06.2013, 13:33
    #38296155
handmadeFromRu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Жуткие тормоза при использовании IHttpHandler
ну так что именно отдача картинки медленно идет? как мерили то? или может весь хтмл ?
...
Рейтинг: 0 / 0
13.06.2013, 13:33
    #38296156
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Жуткие тормоза при использовании IHttpHandler
Oleg_Olegресайз картинки делал через Bitmap, сейчас переписал на WebImage.
ресайз на лету что ли?
...
Рейтинг: 0 / 0
13.06.2013, 13:39
    #38296172
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Жуткие тормоза при использовании IHttpHandler
Oleg_Oleg, чтобы что-то говорить о медленной скорости, для начала покажи графический скрин гет запросов из фаербага или девтулзов. Потом будет разговор.
...
Рейтинг: 0 / 0
14.06.2013, 03:39
    #38297230
_Case
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Жуткие тормоза при использовании IHttpHandler
Возможно Ваш хэндлер тормозит из-за того что Вы Connection не закрываете.. создание Connection-а лучше бы конечно делать в блоке using - чтобы Dispose() вызвался..
...
Рейтинг: 0 / 0
14.06.2013, 14:40
    #38297865
Oleg_Oleg
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Жуткие тормоза при использовании IHttpHandler
МСУ, thumbnail не использую.
Изопропил, ну наверное можно это назвать ресайзом на лету.
_Case, ЕвгенийВ, действительно вроде как стало побыстрее, после того как начал правильно работать с конекшином.
handmadeFromRu, похоже что страница вся долго грузится (там много чего еще есть помимо этих картинок). Наконец-то установил я себе Firebug, теперь вижу сколько выполняются get запросы на странице. Время ответа на запрос для моих картинок в интервале от 280ms до 500ms. Это много или нормально? Это самые долгие getы после основного geta страницы.
...
Рейтинг: 0 / 0
14.06.2013, 14:44
    #38297874
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Жуткие тормоза при использовании IHttpHandler
Oleg_OlegМСУ, thumbnail не использую.
И после этого ты еще жалуешься на низкую скорость?

Oleg_OlegИзопропил, ну наверное можно это назвать ресайзом на лету.
"Наверное" не катит: либо ты ресайзишь картинку на лету, либо отдаешь её такой, как она есть. Два варианта.

Oleg_Olegпохоже что страница вся долго грузится
Неужели? Попробуй тебе видео фильмы грузить на страницу.
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Жуткие тормоза при использовании IHttpHandler / 19 сообщений из 19, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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