Я пришел к выводу, что использование jQuery для создания клиентской части HTML может значительно повысить производительность, если все сделано правильно. Я использую AJAX, возвращающий JSON, для извлечения динамического контента, а затем строю соответствующий HTML и вставляю его, используя jQuery. В первый раз, когда я испортил эту технику, я обнаружил, что конкатенатор строк в JavaScript IE работал очень медленно, поэтому создание динамической таблицы с более чем 50 строками выполнялось ужасно.
var shtml = '<table>';
for (var i = 0; i < 100; i++) {
shtml += '<tr><td>A bunch of content</td></tr>';
}
shtml += '</table>';
$('#myTable').append(shtml);
Затем я нашел метод конкатенации строк, который изменил все. Вместо использования оператора sting +=
используйте массивы для объединения;
var shtml = ['<table>'];
for (var i = 0; i < 100; i++) {
shtml.push('<tr><td>A bunch of content</td></tr>');
}
shtml.push('</table>');
$('#myTable').append(shtml.join(''));
Я обнаружил, что производительность значительно улучшилась. Теперь, однако, есть потолок около 100 строк, прежде чем я начинаю видеть, что сам браузер борется с динамической вставкой такого большого количества контента одновременно. У кого-нибудь есть какие-либо указатели или методы, которые могут помочь мне добиться следующего повышения производительности для больших наборов динамического HTML?