Я пришел к выводу, что использование jQuery для создания HTML на стороне клиента может значительно повысить производительность, если все сделано правильно. Я использую AJAX, возвращающий JSON для получения динамического контента, а затем создаю соответствующий HTML и вставляю его с помощью jQuery. В первый раз, когда я столкнулся с этой техникой, я обнаружил, что конкатенатор строк в IE JavaScript работает очень медленно, поэтому построение динамической таблицы с более чем 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);
Затем я нашел технику конкатенации строк, которая изменила все. Вместо использования оператора +=
для конкатенации используйте массивы;
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?