сколько у вас может быть div, прежде чем dom замедлится и станет нестабильным? - PullRequest
11 голосов
/ 27 мая 2010

Я занимаюсь разработкой приложения jQtouch, и каждый запрос, выполняемый через ajax, создает в документе новый div для загруженного контента. Только один div отображается одновременно.

Сколько div я могу иметь до того, как приложение начнет отвечать на запросы и работать медленно?

У кого-нибудь есть идеи по этому поводу?

РЕДАКТИРОВАТЬ: это приложение для iPad, работающее в Safari, и оно будет менее 1000 дел с очень простым содержимым

Ответы [ 5 ]

16 голосов
/ 27 мая 2010

У меня сразу на экране были десятки тысяч, может быть, даже сотни тысяч делений. Производительность либо хорошая, либо плохая, в зависимости от:

Анализируется с HTML или генерируется динамически в JavaScript?

Анализ из HTML означает, что у вас есть БОЛЬШОЙ HTML-источник, и это может привести к зависанию браузера. Генерируется в JS на удивление быстро, даже в Internet Explorer, который является самым медленным из всех браузеров для JS.

8 голосов
/ 27 мая 2010

Если честно, если вам действительно нужен абсолютный ответ на этот вопрос, то вы, возможно, захотите пересмотреть свой дизайн.

Ни один из приведенных здесь ответов не будет правильным, поскольку это зависит от многих факторов, характерных для вашего приложения. Например. тяжелый и малый объем использования CSS, размер элементов div, количество фактической визуализации графики, необходимой для каждого элемента div, целевой браузер / платформа, количество прослушивателей событий DOM и т. д.

То, что вы можете, не означает, что вы должны! : -)

6 голосов
/ 27 мая 2010

Как уже говорили другие, ответа действительно нет.

Однако , в этом выступлении о API Карт Google версии 3 оратор несколько раз поднимает число десять тысяч в качестве основного порога для несчастного случая в браузере.

http://code.google.com/apis/maps/documentation/javascript/

1 голос
/ 27 мая 2010

Без определения конкретной среды, невозможно ответить на ваш вопрос.

И даже тогда все, что кто-то говорит вам, является лишь догадкой. Вам нужно провести собственное тестирование на реальных конфигурациях с различными браузерами и оборудованием. Вам также необходимо установить некоторые тесты производительности, чтобы решить, что означает «слишком медленный».

0 голосов
/ 28 июня 2010

Я смог добавить несколько тысяч делений без проблем. Конечно, зависит от того, что вы будете делать потом, и от памяти на клиентском компьютере. Все остальные правы в этом.

Как сказал Харпо, 10K - это, вероятно, хороший потолок. В свое время я заметил проблемы со скоростью, начиная примерно с 4 КБ, но с тех пор аппаратное обеспечение улучшилось.

И, как сказал Нил Н, добавлять div с помощью сценариев лучше, чем иметь огромный источник HTML.

И, чтобы ответить на комментарий Харпо, один из способов «разбить его», чтобы JS не блокировал страницу и не выдавал «страница работает медленно», состоит в вызове таймера в конце каждого «добавления подпрограмма "div", и таймер, в свою очередь, снова вызывает функцию "добавить div".

Теперь, МОЙ вопрос: можно ли «рисовать», чтобы вам не нужно было добавлять тысячи делений? Это можно сделать с помощью тега canvas в некоторых браузерах, но я не думаю, что это возможно с VML (проект excanvas) в IE. Либо это? Я думаю, что VML «рисует», добавляя новые элементы в DOM, после чего вы можете также использовать DIV, если это не простая форма.

Можно ли изменить источник изображения с помощью сценариев? (изображение в DOM, конечно, не оригинальное изображение на сервере.)

...