Я пытаюсь определить, почему представление сетки asp.net так ужасно медленно. Вид сетки содержится в пользовательском подклассе, который добавляет пользовательский пейджер и выполняет специальное форматирование. Кроме того, пользовательский вид сетки содержится в пользовательском элементе управления, который помещает вид сетки в панель обновлений и объединяет его с источником данных объекта, чтобы сделать элемент управления простым в использовании.
Я проследил замедление до двух проблемных областей:
- Первый - это размер отображаемого html и viewstate. Мне удалось улучшить это путем рендеринга viewstate в переменную сеанса вместо скрытого поля, но я могу переписать элемент управления, чтобы вообще не использовать viewstate.
- Но моя главная проблема - рендеринг элемента управления. На простой странице, где единственным элементом управления является мой пользовательский элемент управления, рендеринг сетки с 40 столбцами и 20 строками занимает несколько секунд даже при отключенном состоянии просмотра! Глядя на след, я обнаружил, что этап PreRender занимает 95% времени, поэтому я предполагаю, что проблема есть.
Итак, мой вопрос: как мне это исправить? У меня проблемы с отслеживанием того, что asp.net делает на этапе PreRender. У меня есть некоторый код в пользовательском элементе управления, который вызывается, но большую часть времени я проводил за пределами моего кода.
Я попытался загрузить символы отладки для asp.net, но Visual Studio все еще не позволяет мне войти в код, и трассировка не дает здесь слишком много информации.
Кто-нибудь еще был в этой ситуации? Сначала я подозревал, что мой источник данных, но вызов базы данных быстрый, поэтому проблема не в этом.