2017-02-06 32 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。