Плавное переформатирование большого количества изображений (600+)

Я работаю над веб-приложением, которое заполняет страницу большим количеством изображений.

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

Иногда за один обратный вызов генерируется до 600+ изображений. Это элементы img с данными uris, которые содержат встроенный svg.

Мой вопрос касается производительности. Сам Javascript выполняется очень быстро, но как только 600 или около того изображений добавлены в DOM, браузеру может потребоваться до ПЯТНАДЦАТИ СЕКУНД, чтобы выполнить все перекомпоновки. Браузер на это время зависает, меню перестают отвечать, и до завершения перекомпоновки никаких изменений не отображается. (Хром версии 66)

Есть ли способ устранить это узкое место и ускорить перекомпоновку всех изображений? например, подход CSS, который делает макет тривиальным? Если бы я сделал все изображения одинакового размера, это помогло бы?

Если его нельзя ускорить, есть ли способ сделать перекомпоновки, не блокируя взаимодействие пользователя со страницей?

Спасибо за вашу помощь!


person Jeremiah Rose    schedule 03.07.2018    source источник


Ответы (1)


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

Создание асинхронного кода путем выполнения setTimeout(function, 0) для каждого изображения, где function добавляет изображение в DOM, решило проблему.

person Jeremiah Rose    schedule 04.07.2018