Контекст: У меня есть веб-приложение, которое обрабатывает и показывает огромные файлы журналов. Обычно их длина составляет всего около 100 тыс. Строк, но может составлять до 4 млн. Строк или более. Чтобы иметь возможность прокручивать этот файл журнала (как инициированный пользователем, так и через JavaScript) и фильтровать строки с достойной производительностью, я создаю элемент DOM для каждой строки, как только данные поступят (в JSON через ajax). Я нашел это лучше для производительности, а затем построил HTML в фоновом режиме. После этого я сохраняю элементы в массиве, и я показываю только видимые строки.
Для линий max 100k это занимает всего несколько секунд, но для линий 500k (не считая загрузки) требуется больше одной минуты. Я хотел улучшить производительность еще больше, поэтому я попытался использовать веб-работников HTML5. Проблема в том, что я не могу создавать элементы в веб-рабочем, даже вне DOM. Поэтому я закончил работу с json-конверсией в Web Workers и отправил результат в основной поток. Там он создается и сохраняется в массиве. К сожалению, это ухудшило производительность, и теперь это занимает не менее 30 секунд.
Вопрос:. Есть ли способ, который я не знаю, создавать элементы DOM, вне дерева DOM, в веб-рабочем? Если нет, почему бы и нет? Мне кажется, что это не может создать проблемы concurrency, так как создание элементов может происходить параллельно без проблем.