Панель обновления работает очень медленно - PullRequest
4 голосов
/ 20 марта 2011

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

Это работает, но невероятно медленно и что-то еще на FF У меня есть заданная ошибка:

Информация о состоянии недействительна для этой страницы и может быть повреждена

3 флажка с другими полями находятся в updatePanel

Каждое поле в теге dl с runat="server>

Я должен был сделать это так, потому что для "обязательной" опции я просто добавляюКласс CSS для этого dl (требуется в проверке javascript. Если поле должно быть видимым, я устанавливаю visible = "false" для данного dl, а затем это поле, например FirstName с заголовком и т. д., не отображается после обратной передачи.

Я делаю что-то не так? Почему это занимает так много времени (~ 4 минуты на локальном хосте), а в Firefox это на самом деле не работает (когда я использую отладку, я думаю, что процесс завершается без ошибок на ff, я совсем не понимаю этого:)

Если обновление Panel настолько слабое, что было бы другим вариантом изменить видимость и добавить требуемый класс ко всем dls. Логика довольно сложна и должна делать запрос к БД такпростой javascript был бы довольно сложным.

Спасибо за любые подсказки,

О, и я использую ASP.Net и не могу обновить этот проект.

Спасибо за помощь,прощай

Ответы [ 4 ]

4 голосов
/ 20 марта 2011

Без кода, вот общие вещи, которые замедляют работу UpdatePanel:

  • Большое количество данных формы (таких как Viewstate) публикуется. Загруженные данные часто медленнее, чем загружаемые данные (в зависимости от типа подключения, например домашнего подключения, где загрузка может быть в 5 раз медленнее загрузки). Даже если вы не видите его, каждое поле формы на странице отправляется обратно на сервер (даже если его нет в панели обновления).

Я бы предложил просмотреть данные вашего запроса / ответа в Firebug и убедиться, что ваши асинхронные запросы не превышают 5 КБ, а ваши ответы - не более 20 КБ.

  • Медленный процесс на сервере, который выполняется при публикации UpdatePanel. Как работает ваш код при удалении UpdatePanel?

  • Ошибки JavaScript (ваши и Microsoft). Вот ссылка на известную ошибку и исправление, которое я использовал сам: http://support.microsoft.com/?kbid=2000262

  • Массивные манипуляции с DOM (похоже, это не так)

Кстати, поиск сообщения об ошибке, о котором вы сообщили, дает много возможных причин: http://www.google.com/search?aq=f&sourceid=chrome&ie=UTF-8&q=The+state+information+is+invalid+for+this+page+and+might+be+corrupted

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

1 голос
/ 26 декабря 2012

Необходимо установить режим обновления свойств панели на Conditional вместо Always. Ограничьте количество элементов управления, которые вы помещаете в одну панель обновления

0 голосов
/ 23 января 2016

Попробуйте с этими значениями свойств в Page directive. Это всегда вверху вашей страницы. Пусть другие свойства будут там, как они были раньше. Обновление панелей не должно быть медленным, как вы сообщаете.

 <%@ Page ViewStateEncryptionMode="Never" EnableViewStateMac="false"
       EnableEventValidation="false" %>

Я также хотел бы добавить, что если упомянутый вами запрос к базе данных является сложным, он занимает очень много времени, то проблема заключается не в странице aspx или панели обновлений, а в запросе к вашей базе данных. Затем вам нужно будет профилировать ваш запрос и проверить, сколько времени требуется для его выполнения. В этом случае можно было бы настроить свой запрос на уровне базы данных.

0 голосов
/ 08 июня 2013

Возможно, вы захотите проверить события страницы и т. Д. Изучите директиву и свойство страницы AutoEventWireup Поскольку производительность - это проблема, которую вы выделили, вы можете также проверить это.Режим обновления панели должен быть условным.Также проверьте триггеры

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...