2008-09-04 2 views
2

Мы использовали «Капельницу», чтобы попытаться определить, почему страницы с UpdatePanels в них имеют тенденцию использовать много клиентской памяти. С помощью страницы с обычной обратной записью мы обнаруживаем 0 утечек, обнаруженных Drip. Однако, когда мы добавляем панель обновления в микс, каждый объект DOM, который находится внутри панели обновления, кажется, течет (согласно Drip).Является ли Microsoft ASP.NET Ajax причиной утечки объектов DOM?

Я не уверен, что Drip достаточно надежна, чтобы сообщать об этих вещах - сообщаемые утечки действительно указывают на то, что капелька слегка изменяет страницу.

У кого-нибудь есть опыт? Должен ли я паниковать и прекращать использование Microsoft Ajax? Я не слишком сомневаюсь в Microsoft, но мне кажется подозрительным, что это может быть этот плохой.

Кроме того, если вы знаете инструмент, который лучше, чем Drip, это также было бы полезно.

ответ

2

Согласно ASP.NET AJAX in Action, p. 257

Перед заменой старой разметки на обновленный HTML все элементы DOM на панели проверяются на поведение Microsoft Ajax или элементы управления, прикрепленные к ним. Чтобы избежать утечек памяти, компоненты, связанные с элементами DOM, удаляются, а затем уничтожаются при замене HTMl.

Насколько я знаю, любые компоненты ajax asp.net на панели обновления предназначены для предотвращения утечек памяти, но что-то еще там будет заменено только на полученный html.

Итак, если у вас нет компонентов ajax asp.net в целевом контейнере для ответа, он будет в основном такой же, как замена внутреннего html любым другим js-фреймворком/ajax-запросом, поэтому я бы сказал, что это просто то, как браузер обрабатывает это, а не asp.net ajax, вызывающий это.

Кроме того, хотя это может быть «утечка», это может быть по дизайну, что означает, что браузер, возможно, еще не восстановил элементы dom и не выпустил их. Кроме того, капель может быть причиной утечки, поскольку он прикрепляется к тем элементам dom.

0

Это очень вероятно. Это было в значительной степени тем, что мы предполагали (проблема с браузером, не обязательно Ajax).

Наша проблема заключается в том, что к этому приложению обращаются многие люди через среду Citrix, причем каждая страница постоянно создает объекты DOM, а не освобождает их, среда Citrix начинает биться после некоторого использования. Я видел подобные жалобы онлайн (особенно, если вы достаточно глупы, чтобы получить доступ к веб-сайту Ajax через Citrix), но это не заставляет меня чувствовать себя намного лучше, чем это предполагаемое поведение.

Мне интересно сейчас, если кто-нибудь придумал умное обходное решение. У нас также есть клиентское приложение, в котором мы используем .NET BrowserControl для доступа к этим веб-сайтам, а не просто для IE7, поэтому, если кто-то знает секретный вызов API (FreeStaleDomObjectsFTW()), мы можем использовать с этого конца стека, это было бы полезно.

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