2012-01-11 2 views
1

Мне удалось настроить некоторые элементы управления ASP.NET для визуализации изображений из базы данных с помощью HttpHandler.ASP.NET HttpHandler и частота обращений

// Notice the ImageHandler.ashx 
<asp:Image ID="imgSrvcGrp" runat="server" ImageUrl='<%# DataBinder.Eval(Container.DataItem, "ServiceGroupID", "~/ImageHandler.ashx?id={0}") %>' /> 

Он отлично работает и был на удивление прост в настройке. Мой вопрос следует ...

Я заметил, что HttpHandler (ImageHandler.ashx) попадает в определенное время, когда я этого не ожидаю. Например, у меня есть точка останова на событии Page_Load страницы, содержащей теги изображения, которые используют HttpHandler и другую точку останова в самом обработчике, и я обнаружил, что даже если нет обратной передачи (т. Е. Точка останова Page_Load не ударяется) обработчик иногда получает удар (т. е. удаляется точка разрыва в обработчике).

Как ни странно, я обнаружил, что это происходит, когда я закрываю диалоговое окно jQuery на странице. У меня появилось диалоговое окно jQuery на странице, и я обнаружил, что когда я закрываю всплывающее окно jQuery (щелкнув по X), обработчик изображения попадает для каждого изображения на странице, которая его потребляет, и при этом никакой обратной передачи не происходит.

Единственная другая деталь, которую я могу добавить, это моя веб-страница, использующая RadTabStrip от Telerik, и вполне возможно, что она каким-то образом влияет на этот вопрос.

Я понимаю, что мои объяснения были довольно длинными, поэтому, чтобы быть более краткими из моего вопроса: Почему мой обработчик изображения попадает так часто, даже если нет обратных передач?

+0

Я бы ожидал, что это пострадает от нагрузки на странице _every_, а не только после обратной передачи. – Oded

+0

Он попадает на каждую загрузку страницы, но обработчик также даже не имеет обратной передачи. Однако нижеприведенный ответ Дэвида разъяснил мне кое-что. – Jagd

ответ

1

Поскольку загрузка ресурса страницы и публикация формы - это разные действия.

Не думайте об этом с точки зрения ASP.NET с обработчиками postbacks и Page_Load и еще много чего. Подумайте об этом с точки зрения фактического HTML в браузере. «Отправка» - это не более чем форма, размещенная на странице. Если вы ничего не делаете, чтобы вызвать сообщение о форме, страница не будет отправляться обратно.

Однако является, ударяя по серверу, когда он запрашивает другие ресурсы. Файлы CSS, файлы JavaScript, изображения и т. Д. Ресурсы, на которые ссылается HTML-код, который требуется загрузить. Поэтому, когда страница загружается, она не просто попадает на сервер один раз. Он попадает на сервер, чтобы получить документ HTML (здесь используется страница Page_Load для запуска страницы), и пока он отображает этот HTML-код, он снова и снова попадает на сервер для каждого ресурса, на который ссылается документ HTML.

Если страница скрывает/показывает ресурсы с динамическими настройками стиля, тогда не нужно повторно загружать эти ресурсы каждый раз, когда она их показывает. Однако, если страница делает что-то, что заставляет его повторно отображать загруженный контент (и этот контент не кэшируется в браузере), он попадет на сервер. Это будет причиной того, что обработчик ASHX получит удар.

Одно из предложений для вас - загрузить страницу с помощью некоторых инструментов отладки (FireBug в Firefox по-прежнему является моим личным выбором) и следить за фактическим движением и выходом на страницу (вкладка «Net» в FireBug , возможно, что-то подобное в других инструментах.) Это может помочь вам точно определить, что запрашивается и, возможно, что запрашивает. Например, если этот RadTabStrip по какой-либо причине удаляет img элементов со страницы и повторно их добавляет, он будет запрашивать изображение с сервера каждый раз.

+0

Спасибо, Дэвид. Я сделаю дальнейшие исследования в нем и посмотрю, не могу ли я определить, что заставляет страницу обновлять изображения на ней. На данный момент я собираюсь оставить вопрос открытым, если у меня есть еще несколько комментариев/вопросов, которые нужно добавить по этому вопросу. Еще раз спасибо! – Jagd

Смежные вопросы