Gibt es eine Möglichkeit, in Web Worker DOM-Elemente zu erstellen?

Kontext: Ich habe eine Webanwendung, die große Protokolldateien verarbeitet und anzeigt. Normalerweise sind sie nur etwa 100.000 Zeilen lang, es können jedoch bis zu 4 Millionen Zeilen oder mehr sein. Um durch diese Protokolldatei zu scrollen (sowohl vom Benutzer als auch über JavaScript) und die Zeilen mit angemessener Leistung zu filtern, erstelle ich für jede Zeile ein DOM-Element, sobald die Daten eingehen (in JSON über Ajax). Ich fand das für die Leistung besser, als das HTML am Back-End zu konstruieren. Danach speichere ich die Elemente in einem Array und zeige nur die Linien, die sichtbar sind.

Bei max. 100k-Leitungen dauert dies nur einige Sekunden, bei 500k-Leitungen dauert es bis zu einer Minute (ohne Download). Ich wollte die Leistung noch weiter verbessern und habe versucht, HTML5 Web Worker zu verwenden. Das Problem ist jetzt, dass ich keine Elemente in einem Web Worker erstellen kann, auch nicht außerhalb des DOM. Also habe ich nur die Konvertierung von json nach HTML in den Web Workern durchgeführt und das Ergebnis an den Haupt-Thread gesendet. Dort wird es erstellt und in einem Array gespeichert. Leider hat dies die Leistung verschlechtert und jetzt dauert es mindestens 30 Sekunden länger.

Frage: Gibt es also eine Möglichkeit, die mir nicht bekannt ist, DOM-Elemente außerhalb des DOM-Baums in einem Web Worker zu erstellen? Wenn nein, warum nicht? Es scheint mir, dass dies keine Parallelitätsprobleme verursachen kann, da das Erstellen der Elemente ohne Probleme parallel erfolgen kann.

Antworten auf die Frage(9)

Ihre Antwort auf die Frage