Влияние на производительность с помощью ASP.NET Элементов управления

StackOverflow https://stackoverflow.com/questions/624539

  •  05-07-2019
  •  | 
  •  

Вопрос

Имея пользовательские элементы управления на странице, я понимаю, что каждый элемент управления влияет на использование памяти, сохраняя свое собственное состояние в ViewState.Мой вопрос в том, сколько?

Например, у меня есть форма обратной связи в качестве элемента управления на моей главной странице.По умолчанию для него установлено значение Visible="false".Пользователь нажимает на кнопку обратной связи, и элемент управления становится видимым, пока это необходимо.

Каково было бы относительное влияние на производительность, если бы элемент управления находился на каждой странице (поскольку он расположен на главной странице), но не был виден?Сайт, который я разрабатываю, потенциально будет иметь большой объем трафика, и я задаюсь вопросом, не обрекаю ли я себя на головную боль позже, если все станет замедляться.

Спасибо

Это было полезно?

Решение

Это может повлиять на производительность сервера и клиента.В первую очередь вы хотите уменьшить объем HTML, включая viewstate, который отправляется клиенту.Если это будет размещено на каждой странице, то вы будете отправлять эту информацию о состоянии просмотра чаще, чем вам действительно нужно.

Я думаю, у вас должна быть какая-то логика, которая гарантирует, что элемент управления формой обратной связи добавляется только на страницу обратной связи.Вместо того чтобы использовать visible="false", поместите его на свою собственную страницу и дайте на него ссылку или динамически добавьте элемент управления на страницу.

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

При всех проблемах с производительностью вы должны тестировать производительность и выносить суждения на основе достоверных данных.В этом случае вычислите размер viewstate на клиенте, затем умножьте на количество запросов, чтобы увидеть размер использования полосы пропускания на сервере.На клиенте используйте такой инструмент, как FireBug, чтобы определить общий размер страницы, получаемой клиентом.

Другие советы

Это зависит от контроля.Datagrid с сотнями строк может генерировать 100k viewstate.С другой стороны, checkbox не будет генерировать слишком много данных.

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

Я бы не стал думать о такой оптимизации с самого начала.Если позже это станет медленным, вы всегда можете изменить форму на чистый html и использовать ajax или что-то еще, чтобы отправить ее данные на сервер.Пока это пользовательский контроль, а не копирование вставленного содержимого, оптимизировать его будет легко

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top