для вставки данных ajax в страницу, что быстрее, чем innerHTML? - PullRequest
1 голос
/ 17 сентября 2010

Я делаю ajax-работу, где веб-сервис будет возвращать данные и на стороне клиента, и я создаю HTML-таблицу с данными.Я использую var (для хранения строки сгенерированного HTML-кода), делаю конкатенации строк для генерации тегов таблиц, tr и td и помещаю в них данные.Затем я поместил эту HTML-таблицу с данными в div с помощью innerHTML.Обратите внимание, что я применяю встроенный CSS в этом динамическом HTML-коде.

Проблема, с которой я сталкиваюсь, заключается в том, что веб-сервис вернет огромное количество данных.То, что я тестировал, даже на локальной машине заняло около 10-12 минут для обработки (конкатенации, создания тегов, помещения данных в таблицу, применения css) 10000 строк.Хранимая процедура займет всего 3-4 секунды при возврате данных.Подскажите, пожалуйста, как можно сократить время обработки в браузере?Я делаю это для скорости каким-то неправильным способом?Или есть какой-то метод для этого или какой-то метод быстрее, чем innerHTML и конкатенации строк?

спасибо

Ответы [ 3 ]

2 голосов
/ 17 сентября 2010

Часто гораздо быстрее сначала создать элемент, а затем добавить его в DOM.Попробуйте это:

if (document.createTextNode) {
    // Create the element
    var txtNode = document.createTextNode("Hello. This is a new node."); 
    // Append it to another object
    document.getElementById("mydiv").appendChild(txtNode);
}
1 голос
/ 17 сентября 2010

innerHTML предположительно быстрее, чем манипуляции с DOM (я сам никогда не проверял, но это то, что я читал в нескольких местах).Кроме того, вставка строк в массив с последующим присоединением, предположительно, намного быстрее в IE, чем конкатенация.

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

То, что я тестировал, даже на локальной машине заняло около 10-12 минут для обработки (конкатенация, создание тегов, помещение данных в таблицу, применение css) 10000 строк

Это огромное количество данных для отображения в браузере. Особенно, когда вы сделаете это удаленным.

Почему вы пытаетесь показать столько данных в браузере, во-первых, я думаю, что во всей идее что-то не так.

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

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