ASP.NET Validator управляет замедлением страницы - PullRequest
2 голосов
/ 12 марта 2010

У меня есть UpdatePanel, к которой динамически добавляются пользовательские элементы управления. Время от времени может быть несколько десятков пользовательских элементов управления.

Страница / UpdatePanel сильно замедляется при каждой обратной передаче, поскольку добавляется больше пользовательских элементов управления. После некоторого копания я был удивлен, обнаружив, что причиной являются различные элементы управления CompareValidator, CustomValidator, RegularExpressionValidator и RequiredFieldValidator, которые существуют на каждом пользовательском элементе управления.

У кого-нибудь есть предложения? Мне кажется очень странным, что включение этих элементов управления ASP.NET может оказать такое ужасное влияние на производительность.

Спасибо

Calvin

Ответы [ 3 ]

0 голосов
/ 12 марта 2010

Есть пара вещей. Сначала все элементы управления ASP.NET Validation генерируют огромное количество JavaScript, который добавляется на страницу в виде WebResource или ScriptResource. Эти сценарии загружаются один раз, а затем кэшируются, поэтому они не должны вызывать проблемы, вызывающие медлительность на частой основе.

Другое дело, панель обновления. Панель обновлений - это потрясающий элемент управления, но он ретранслирует ViewState. Это означает, что независимо от того, какой элемент управления вы поместите в панель обновления, состояние просмотра этого элемента будет отправлено на сервер при обратной передаче. Поскольку элементы управления внутри UpdatePanel увеличиваются, ViewState будет увеличиваться.

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

Вот мой пост, в котором описано, как создать элемент управления движением ViewState:

http://azamsharp.com/Posts/139_ViewStateMoverModule_Released_.aspx

0 голосов
/ 12 марта 2010

Большинство (все?) Элементов управления проверкой ASP.NET существовали со времен первой версии .NET Framework, и они соответствуют общему веб-элементу управления той эпохи: «отлично работает на моей линии T1. «

Для приложений, чувствительных к производительности, я бы просто не использовал их. Есть обходные пути, но лечение может быть хуже, чем болезнь. (Например, вы можете выполнить всю проверку на сервере, установив EnableClientScript = false.)

В настоящее время я обычно использую плагин jQuery Validation .

0 голосов
/ 12 марта 2010

Если у вас много таких валидаторов, и проверка на стороне клиента включена, браузеру может быть непросто перебрать их все.

...