2017-02-06 29 views
1

我正在使用document.implementation.createHTMLDocument方法解析大型HTML文件。我创建新的文档,在HTML写上它们,然后使用标准文件的方法来遍历树。使用web工作人员解析HTML

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

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

难道我就在我的假设?

有没有其他有效的方法可以使用?

回答

1

写这个问题一分钟后,我发现下面的语句在jsdom项目:

它甚至有浏览器中运行,使您能够创造出一个DOM文档网络工作者中的能力的实验性支持。

所以我想我会看着jsdom,并测试我是否能从这种方法获得性能提升。

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

1

这被证明是非常密集的浏览器,我正在寻找其他的选择。

做同样的事情,但在一个网络工作者仍然是密集的,它只是在做用户界面不会挂了,你有更多的胶水代码/行为编写和维护接线的一切行动。

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

,可能适合你的情况的替代,是不是因为你现在使用基于DOM的解析,是使用基于事件的解析。 https://github.com/isaacs/sax-jshttps://github.com/marko-js/htmljs-parser可能是合理的出发点。根据如何你迭代,你与每个节点做什么,这有可能成为资源较少。甚至有一天做它在浏览器UI线程。

当然,如果结果仍然过于紧张,您可以将其移至网络工作人员,以避免在处理文档时挂起UI。