Улучшит ли iframes производительность сайтов с очень большим количеством элементов dom? - PullRequest
4 голосов
/ 25 сентября 2010

Для сайтов с очень большим количеством элементов DOM, есть ли какой-то выигрыш в производительности для представления некоторого контента в iframe?Например, приложение, над которым я работаю, имеет очень большое дерево на основе html, которое может содержать десятки тысяч узлов одновременно (хотя и не загружается все сразу).Если оставить в стороне проблемы с удобством использования дерева такого размера, будет ли какая-то польза от размещения этого контента внутри фрейма, а не на главной странице?Браузеры по-разному обрабатывают память для содержимого, встроенного в iframes?Повысит ли это производительность селектора jquery, изолировав этот контент?Меня больше всего интересует, как это применимо к IE 7, хотя мне было бы любопытно, если бы оно отличалось в разных браузерах.

1 Ответ

1 голос
/ 25 сентября 2010

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

Это сторона анализа и памяти; Однако я обнаружил, что время рендеринга может сильно пострадать при больших вставках innerHTML, поэтому попробуйте вместо этого использовать шаблон document.createElement (если применимо). Я испытывал такое поведение в различных браузерах, включая IE7.

То, где происходят элементы DOM, также имеет значение. Все узлы отображаются на стороне сервера, или вы отправляете JSON клиенту и создаете дерево в JavaScript? Я могу подтвердить, что правильно построенные деревья объектов JavaScript могут очень эффективно обрабатывать тысячи узлов, поэтому, если ваша схема рендеринга основана на клиенте и все узлы не отображаются одновременно, фактический DOM будет намного меньше.

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

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