使用Web worker解析HTML

时间:2017-02-06 17:42:25

标签: html-parsing web-worker

我正在使用document.implementation.createHTMLDocument方法解析大型HTML文件。我创建新文档,将HTML写入它们,然后使用标准文档方法迭代树。

这在浏览器上非常密集,我正在寻找其他选择。

我正在考虑将工作卸载到WebWorkers,但据我所知,他们无法访问DOMImplementation接口。

我的假设是对的吗?

我可以使用其他有效的替代方案吗?

2 个答案:

答案 0 :(得分:1)

写完这个问题一分钟后,我在jsdom项目中找到了以下句子:

  

它甚至具有在浏览器中运行的实验性支持,使您能够在Web worker中创建整个DOM Document。

所以我想我会调查jsdom,并测试我是否可以通过这种方法获得性能提升。

任何其他建议/想法将不胜感激。

答案 1 :(得分:1)

  

这在浏览器上非常密集,我正在寻找其他选择。

做同样的事情,但在网络工作者中仍然是密集的,只是UI在执行时不会挂起,并且你有更多的胶水代码/行为来编写和维护以连接所有内容。

  

我创建新文档,将HTML写入它们,然后使用标准文档方法迭代树。

可能适合您的情况的替代方案是使用基于事件的解析,而不是像现在一样使用基于DOM的解析。 https://github.com/isaacs/sax-jshttps://github.com/marko-js/htmljs-parser可能是合理的起点。根据您的迭代方式以及您对每个节点的处理方式,这可能会减少资源消耗。甚至可以在浏览器UI线程中完成它。

当然,如果它最终仍然过于密集,那么您可以将其移动到Web工作者,以避免在处理文档时挂起UI。