上下文: 我有一个 Web 应用程序,可以处理和显示巨大的日志文件。它们通常只有大约 100k 行,但可以达到 400 万行或更多。为了能够滚动浏览该日志文件(用户启动的和通过 JavaScript 的)并以良好的性能过滤行,我在数据到达时为每行创建一个 DOM 元素(通过 ajax 以 JSON 格式)。我发现这比在后端构建 HTML 的性能更好。之后我将元素保存在一个数组中,并且只显示可见的行。
对于最多 100k 行,这只需大约几秒钟,但对于 500k 行(不包括下载),更多需要一分钟。我想进一步提高性能,所以我尝试使用 HTML5 Web Workers。现在的问题是我无法在 Web Worker 中创建元素,甚至在 DOM 之外也不行。所以我最终只在 Web Workers 中进行了 json 到 HTML 的转换,并将结果发送到主线程。在那里它被创建并存储在一个数组中。不幸的是,这使性能恶化,现在至少需要 30 秒以上。
问题:那么有什么我不知道的方法可以在 DOM 树之外的 Web Worker 中创建 DOM 元素?如果没有,为什么不呢?在我看来,这不会造成并发问题,因为创建元素可以毫无问题地并行发生。