Я пытаюсь заполнить пустой список, используя массив имен фотографий. Я уже сделал эту работу, но с большим количеством фотографий она может стать относительно медленной. Более 500 фотографий не являются чем-то необычным.Быстрый способ добавления большого списка в dom
Мне интересно, может ли кто-нибудь найти способ сделать этот код более быстрым или рассказать мне, что заставляет этот код работать медленно, поэтому я могу еще раз взглянуть на него.
Код у меня следующий. this.photoListElement - это объект jQuery, ссылающийся на элемент неупорядоченного списка. photoNames - это массив строк имен фотографий. Переменные объявляются в верхней части функции, которая здесь не показана. isThumbDownloaded проверяет переменную в объекте. getThumb и getThumbId - это функции, которые добавляют некоторые строки вместе.
(...)
place = [];
for(i=0; i< photoNames.length; ++i) {
photoName = photoNames[i];
if(coverages.isThumbDownloaded(coverageId, photoName)){ // A function which checks if a photo is downloaded. If it is, the photo should not be hidden, and the right background should be applied.
bg = 'background-image:url(\''+coverages.getThumb(coverageId, photoName) + '?' + new Date().getTime()+'\');';
cls = '';
} else {
bg = '';
cls = 'hidden';
}
place[i] = '<div id="'+ this.getThumbId(photoName) +'" photoName="'+photoName+'" style="'+bg+'" class="phoPhoto '+cls+'" onclick="$.mobile.changePage($(\'#carousel\'), {transition: \'slidefade\'})"></div>';
}
this.photoListElement.html(place.join(''));
(...)
Справка очень ценится.
После исследования
Проблемы не цикл, хотя некоторые незначительные оптимизации могут быть сделаны, но, как вставка дома.
Я не использую строгий режим в этой функции. Будет ли это иметь значение вообще? –
Загрузка 500 файлов изображений происходит медленно. Вы действительно думаете, что вам нужно это сделать? – Bergi
Что означает 'coverages.isThumbDownloaded', если вы используете кешьюстер сразу после него? – Bergi