[jquery] и большой объем данных. Виснет браузер

Тема в разделе "JavaScript", создана пользователем dandandan, 13 ноя 2011.

Модераторы: ZiX
  1. dandandan

    dandandan

    Регистр.:
    7 авг 2008
    Сообщения:
    975
    Симпатии:
    255
    Так получилось, что по аяксу передается массив данных почти в 2 мегабайта. Затем через jqplot строятся графики. Первый раз файрфокс стойко держится. При повторном получении подвисает. Опера сразу отказывается работать. На ИЕ даже не стал тестить.
    В какую сторону лучше всего разруливать ситуацию с большими объемами данных, передаваемых пользователю? Не хотелось бы подгружать все по частям.

    Алгоритм такой:
    1) Подгрузил данные.
    2) Из данных получил нужные, сформировал из них массив.
    3) Построил график.
    4) Массив удалил.
    5) Повторил пункты начиная со 2-го.
     
  2. dixi

    dixi

    Регистр.:
    15 июн 2011
    Сообщения:
    199
    Симпатии:
    51
    http://chikuyonok.ru/2010/11/optimization-story/
     
    dandandan нравится это.
  3. dandandan

    dandandan

    Регистр.:
    7 авг 2008
    Сообщения:
    975
    Симпатии:
    255
    Еще добавлю. В первый заход диспетчер задачи виндовс показывает, что более 1 ГБ озу используется браузером. При повторной передаче объем растет до 2 гб.

    Похоже проблемы с отрисовкой данных. Делаю слой невидимым, все летает, но, к сожалению, на невидимом слое график не рисуется.
     
  4. dig555

    dig555

    Регистр.:
    22 июн 2007
    Сообщения:
    363
    Симпатии:
    148
    Ничего не понимаю:
    1) Подгрузил данные.
    2) Из данных получил нужные, сформировал из них массив.

    Очевидно, что в п.2 есть какие-то критерии, по которым происходит выборка. Может стоит передавать эти критерии обрабатывающему скрипту, который должен возвращать аккуратный маленький массив?
     
  5. dandandan

    dandandan

    Регистр.:
    7 авг 2008
    Сообщения:
    975
    Симпатии:
    255
    Есть 2 варианта, либо передавать массив в 2 раза больший, либо формировать несколько подмассивов на стороне клиента. В массиве передаются только необходимые данные.

    Проводил эксперимент. Скрывал все содержимое экрана с помощью display:none. Все работает, не тормозит. Видимо проблема именно во множественной прорисовке графиков на стороне клиента (браузера).