|
|
|
Javascript: как сократить время добавления кучи элементов в DOM?
|
|||
|---|---|---|---|
|
#18+
День добрый! Есть некий список виджетов. Туда время от времени добавляются новые. Выглядит это примерно как список онлайн юзеров в чате, список обновляется по событиям входа-выхода в чат людей. Список отсортирован. С ростом нагрузки (и количества, и частоты вставок) это дело начинает притормаживать (особенно почему-то в ie8). Вопрос: можно ли как-то оптимизировать добавление/удаление элементов в DOM? Я мыслю в следующих направлениях: 1. Может быть, имеет смысл отсоединять от дерева контейнер и добавлять туда что надо, а потом подсоединять обратно? 2. Или делать ему display: none? 3. Или может можно как-то добавить элементы скопом, я такого метода не нашел, ну а вдруг?.. 4. Сейчас используется insertion sort, то по чему сортируется берется из виджета - наверное это плохо тк всегда плохо читать что-то из DOM, дешевле хранить отдельный массив, так? 5. Есть ли существенная разница между appendCHild и insertBefore методами? Прошу поделиться опытом! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2013, 00:18 |
|
||
|
Javascript: как сократить время добавления кучи элементов в DOM?
|
|||
|---|---|---|---|
|
#18+
Не видя ни страницы ни кода нельзя сказать что-то определенное. Нужно смотреть, как часто перерисовывается контейнер, излишняя перерисовка может стать причиной тормозов при работе с dom. 1 и 2 стоит попробовать, 3 и 5 погоды не сделают, 4 не понял. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2013, 00:33 |
|
||
|
Javascript: как сократить время добавления кучи элементов в DOM?
|
|||
|---|---|---|---|
|
#18+
Antonariy, благодарю за ответ! С кодом сложно тк это GWT. Контейнер не перерисовывается - туда просто добавляются элементы. 4. - есть контейнер содержащий список дивов. Их надо всегда держать в сортированном виде. Сортировка по id. Чтобы добавить новый надо пройти по всем, считать id, понять где место нового, insertBefore. Предположение в том, что считывание id элемента есть работа с DOM и это плохо, дешевле хранить массив где-то. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2013, 10:06 |
|
||
|
Javascript: как сократить время добавления кучи элементов в DOM?
|
|||
|---|---|---|---|
|
#18+
Dymytry, отеройте для себя Timeline: " История одной оптимизации ". После того, как разберётесь, тогда и будете утверждать, что контейнер не перерисовывается при добавлении в него элементов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2013, 10:30 |
|
||
|
Javascript: как сократить время добавления кучи элементов в DOM?
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2013, 07:01 |
|
||
|
Javascript: как сократить время добавления кучи элементов в DOM?
|
|||
|---|---|---|---|
|
#18+
6. Имеет смысл создавать дивы, но не вставлять их в контейнер до тех пор, пока они не должны оказаться рядом с видимой областью контейнера. Примерно как подгрузка картинок в поиске гугла по мере скролла. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.12.2013, 11:30 |
|
||
|
|

start [/forum/topic.php?fid=22&fpage=112&tid=1447559]: |
0ms |
get settings: |
9ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
47ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
25ms |
get tp. blocked users: |
1ms |
| others: | 213ms |
| total: | 320ms |

| 0 / 0 |
