Как я могу ускорить эту страницу? - PullRequest
0 голосов
/ 12 августа 2011

У меня есть страница ASP.Net WebForms, которая имеет 2 раскрывающихся списка (один с 10 опциями, другой около 600) и около 5 панелей.В зависимости от того, какое значение выбрано в раскрывающихся списках, другие панели становятся видимыми или невидимыми во время асинхронной обратной передачи при запросе к базе данных.

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

Есть ли какие-либо предложения по ускорению этой страницы?

Ответы [ 6 ]

2 голосов
/ 12 августа 2011

Вы можете отключить проверку события для страницы, что должно снизить нагрузку на ваше состояние просмотра (это является причиной большого количества состояний просмотра при начальной загрузке). Проверка события гарантирует, что каждая опция, доступная в ограниченном вводе (выпадающий список, список флажков, список переключателей), была зарегистрирована перед визуализацией. Эта информация сериализуется вместе с viewstate - это наверняка убьет вас.

Вы также можете использовать другой подход при выборе из выпадающего списка 600 предметов. Возможно, вы можете предоставить здесь текстовое поле для автозаполнения AJAX вместо раскрывающегося списка или, возможно, какое-то средство поиска, позволяющее пользователю искать и видеть N соответствий того, что он ищет, в списке из 600 элементов.

Мне кажется, что 600 - это слишком много для выпадающего списка, и вы могли бы получить гораздо большую выгоду за свою пропускную способность, если бы вы немного больше сузили выбор пользователей чуть более динамично ... но да, мой Если оставить в стороне мнения о дизайне, если вы отключите проверку событий для страницы, вы сразу увидите огромное снижение ...

<%@ Page Title="Home Page" EnableEventValidation="false" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"  ... more attribs ... />
2 голосов
/ 12 августа 2011

Возможно загрузить параметры второго раскрывающегося списка по требованию (например, с помощью Автозаполнение набора инструментов управления AJAX или аналогичного элемента управления).

0 голосов
/ 18 августа 2011

Если запросы принимают zip или deflate, ваш ответ возвращает его.

var response = HttpContext.Current.Response;                

string acceptEncoding = HttpContext.Current.Request.Headers["Accept-Encoding"] ?? "";
if (acceptEncoding.Contains("gzip"))
{
    response.Filter =
        new System.IO.Compression.GZipStream(response.Filter,
            System.IO.Compression.CompressionMode.Compress);
    response.AppendHeader("Content-Encoding", "gzip");
}
else if (acceptEncoding.Contains("deflate"))
{
    response.Filter =
        new System.IO.Compression.DeflateStream(response.Filter,
            System.IO.Compression.CompressionMode.Compress);
    response.AppendHeader("Content-Encoding", "deflate");
}

И переместите ViewState в сессию. Переопределите это свойство в классе базовой страницы.

protected override PageStatePersister PageStatePersister
{
    get { return new SessionPageStatePersister(this); }
}
0 голосов
/ 12 августа 2011

Вы можете делать все возможное, чтобы добиться высокой производительности!

1) Чтобы начать, ознакомьтесь с правилами производительности Yahoo .Как правило, это список рекомендаций, которые помогут ускорить работу вашего сайта.

2) Взгляните на Chromes Inspector («Настройки» -> «Инструменты» -> «Инструменты разработчика») или его эквивалент для других браузеров (Firebug в Firefox иЯ считаю, что в IE9 есть инструменты), чтобы выяснить, где находятся основные болевые точки.Они покажут вам все - от размеров файлов до количества сделанных запросов и разбивки загрузки страницы.

3) При необходимости изучите AJAX и отложенную загрузку.Время загрузки все еще будет там, но оно будет гораздо менее заметно для пользователя

4) Проверьте производительность ваших запросов и посмотрите, сможете ли вы их оптимизировать.

Надеюсь, это поможет!

0 голосов
/ 12 августа 2011

gzip html и json, уменьшают количество элементов и anidation, упрощают html и так далее для уменьшения задержки трафика и рендеринга

0 голосов
/ 12 августа 2011

Если вы можете, заполните DropDownList элементы управления в их соответствующих Init событиях.Таким образом, их параметры не будут сохранены в ViewState.Это может сэкономить немало байтов.

Или, что еще лучше, можете ли вы вообще отключить ViewState?

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