コンテキスト: 巨大なログ ファイルを処理して表示する Web アプリケーションがあります。通常は約 10 万行の長さですが、最大で 400 万行以上になることもあります。そのログ ファイルを (ユーザーが開始したものと JavaScript を介して) スクロールし、適切なパフォーマンスで行をフィルター処理できるようにするために、データが (ajax を介して JSON で) 到着するとすぐに各行の DOM 要素を作成します。これは、バックエンドで HTML を構築するよりもパフォーマンスが優れていることがわかりました。その後、要素を配列に保存し、表示されている行のみを表示します。
最大 100k 行の場合、これには数秒しかかかりませんが、500k 行 (ダウンロードを除く) の場合、それ以上の場合は最大 1 分かかります。もっとパフォーマンスを上げたいと思ったので、HTML5 Web Workers を使ってみました。ここでの問題は、DOM の外部であっても、Web Worker で要素を作成できないことです。そのため、Web Workers で json から HTML への変換のみを行い、結果をメイン スレッドに送信することになりました。そこで作成され、配列に格納されます。残念ながら、これによりパフォーマンスが低下し、少なくとも 30 秒以上かかるようになりました。
質問: Web Worker で DOM ツリーの外側に DOM 要素を作成する方法はありますか? そうでない場合、なぜですか?要素の作成は問題なく並行して行われる可能性があるため、これにより同時実行性の問題が発生することはないように思えます。