Почему мои страницы ASP.NET медленно отображаются на сервере? - PullRequest
0 голосов
/ 08 апреля 2009

У меня есть простая страница aspx с элементом управления GridView. Я загружаю GridView с результатами поиска после нажатия кнопки. Все работает, но рендеринг HTML в браузере очень медленный в IE с набором результатов> 2000 (отлично работает в других браузерах.) Я понимаю, что он медленный из-за количества записей, но есть ли способ сделать это быстрее? (Я не хочу использовать пейджинг.)

Как ни странно, он медленный, только когда он размещен на сервере Windows 2003. На моем локальном хосте он работает нормально, но на тестовом сайте или на производстве проблема возникает. Если я удаленного рабочего стола на тестовом сервере и запускаю его там локально, страница загружается нормально. Проблема возникает только при запуске приложения, размещенного на сервере, с локального компьютера.

Как я могу решить эту проблему?

Ответы [ 7 ]

7 голосов
/ 08 апреля 2009

Он отлично работает при передаче с локального узла, поскольку узкого места в сети нет - некоторые браузеры ждут передачи всей таблицы, прежде чем пытаться выполнить рендеринг, особенно если не использовать фиксированную ширину столбцов (что может повысить производительность); Вы смотрели на размер всей сгенерированной страницы?

1 голос
/ 14 апреля 2009

Поскольку в этом случае узким местом является сеть, попробуйте минимизировать полученный HTML-код. По-видимому, вес каждой строки сетки составляет в среднем около 640 байт (2500 записей генерируют 1,6 М полезной нагрузки). Посмотрите, сможете ли вы уменьшить его, удалив ненужные пробелы и сократив идентификаторы любых элементов HTML. Переместите стиль, если он есть, из сетки в CSS, как было предложено ранее. Если grid отображает какие-либо URL-адреса (например, «href» в привязках или «src» в изображениях), попытайтесь сократить их. Кроме того, если HTML, отображаемый с помощью GridView, не является оптимальным, посмотрите, можете ли вы сделать это самостоятельно. Чтобы оценить ожидаемое время отклика страницы в рабочей среде, учтите среднюю скорость сети пользователя (которая может отличаться от скорости сети вашего компьютера).

Если ничего из вышеперечисленного не дает удовлетворительного результата, вы можете проверить решение, которое у нас есть - ускоритель ASP.NET под названием Web Stimulus . Он частично выполняет код страницы ASP.NET на клиенте для визуализации HTML на клиентском компьютере. Типичное сокращение трафика в 10-20 раз при минимальном изменении кода.

1 голос
/ 08 апреля 2009

Если вы еще не сжимаете HTTP-ответ, вам следует изучить это .

  • Посмотрите на Просвет для FireFox (начните здесь)
  • Сжатие вашего ответа стандартным сжатием gzip / deflate
  • Делайте все возможное, чтобы уменьшить объем данных в вашем GridView. Устранить ненужные столбцы и т. Д.
  • Отключить режим просмотра состояния
  • Используйте jsmin , чтобы уменьшить размер файлов JavaScript (если есть)
  • Уменьшите размер вашего CSS (если есть)
1 голос
/ 08 апреля 2009

Если вам нужен ViewState для элемента управления, вы можете уменьшить влияние ViewState, которое GridView оказывает на страницу, отключив ViewState для каждой строки в событии PreRender:

  Private Sub grid_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles grid.PreRender

    For Each item As DataGridItem In grid.Items
      item.EnableViewState = False
    Next

  End Sub
1 голос
/ 08 апреля 2009

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

0 голосов
/ 11 апреля 2009

Почему вы не хотите использовать пейджинг? 1.6 МБ - это много для HTML страницы.

Учитывая, что вы уже отключили режим просмотра, посмотрите на уменьшение количества html на:

  • Удалить ненужные столбцы
  • Используйте только CSS для стилизации сетки. Идея состоит в том, чтобы не повторять одни и те же визуальные правила во всем HTML.
  • Избегайте ненужной разметки в столбцах. Посмотрите на любые столбцы шаблонов, которые у вас есть, и упростите HTML-код (также используйте CSS для стилизации).
0 голосов
/ 11 апреля 2009

Короче говоря, сделайте пользовательский пейджинг, чтобы он не загружал все элементы при загрузке страницы. Linq Data Source сделает это за вас.

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